Tizen release 1.0
authorKim Kibum <kb0929.kim@samsung.com>
Mon, 9 Apr 2012 03:12:15 +0000 (12:12 +0900)
committerKim Kibum <kb0929.kim@samsung.com>
Mon, 9 Apr 2012 03:12:15 +0000 (12:12 +0900)
55 files changed:
CMakeLists.txt [new file with mode: 0755]
INSTALL [new file with mode: 0755]
NOTICE [new file with mode: 0755]
debian/changelog [new file with mode: 0755]
debian/compat [new file with mode: 0755]
debian/control [new file with mode: 0755]
debian/copyright [new file with mode: 0755]
debian/dirs [new file with mode: 0755]
debian/docs [new file with mode: 0755]
debian/org.tizen.ciss.install.in [new file with mode: 0755]
debian/org.tizen.ciss.postinst.in [new file with mode: 0755]
debian/rules [new file with mode: 0755]
include/ciss-common.h [new file with mode: 0755]
include/ciss-converter.h [new file with mode: 0755]
include/ciss-debug.h [new file with mode: 0755]
include/ciss-parser.h [new file with mode: 0755]
include/ciss-resp.h [new file with mode: 0755]
include/ciss-respnd.h [new file with mode: 0755]
include/ciss-string.h [new file with mode: 0755]
include/ciss-tapi-request.h [new file with mode: 0755]
include/ciss-types.h [new file with mode: 0755]
include/ciss-ussd.h [new file with mode: 0755]
include/ciss-util.h [new file with mode: 0755]
include/ciss-widget.h [new file with mode: 0755]
org.tizen.ciss.desktop.in [new file with mode: 0755]
packaging/org.tizen.ciss.spec [new file with mode: 0755]
po/CMakeLists.txt [new file with mode: 0755]
po/POTFILES.in [new file with mode: 0755]
po/de_DE.po [new file with mode: 0755]
po/el_GR.po [new file with mode: 0755]
po/en.po [new file with mode: 0755]
po/es_ES.po [new file with mode: 0755]
po/fr_FR.po [new file with mode: 0755]
po/it_IT.po [new file with mode: 0755]
po/ja_JP.po [new file with mode: 0755]
po/ko_KR.po [new file with mode: 0755]
po/nl_NL.po [new file with mode: 0755]
po/pt_PT.po [new file with mode: 0755]
po/ru_RU.po [new file with mode: 0755]
po/test.pot [new file with mode: 0755]
po/tr_TR.po [new file with mode: 0755]
po/update-po.sh [new file with mode: 0755]
po/zh_CN.po [new file with mode: 0755]
po/zh_HK.po [new file with mode: 0755]
po/zh_TW.po [new file with mode: 0755]
resource/ciss-mmi.edc [new file with mode: 0755]
src/ciss-converter.c [new file with mode: 0755]
src/ciss-main.c [new file with mode: 0755]
src/ciss-parser.c [new file with mode: 0755]
src/ciss-resp.c [new file with mode: 0755]
src/ciss-respnd.c [new file with mode: 0755]
src/ciss-tapi-request.c [new file with mode: 0755]
src/ciss-ussd.c [new file with mode: 0755]
src/ciss-util.c [new file with mode: 0755]
src/ciss-widget.c [new file with mode: 0755]

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..fb0f9ad
--- /dev/null
@@ -0,0 +1,58 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(org.tizen.ciss C)
+SET(APPNAME ciss)
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
+SET(RESDIR "${PREFIX}/res")
+SET(DATADIR "${PREFIX}/data")
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(EDJDIR "${RESDIR}/edje")
+SET(IMGDIR "${RESDIR}/images")
+
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+ADD_DEFINITIONS("-DIMGDIR=\"${IMGDIR}\"")
+
+SET(CISS_SRCS 
+       src/ciss-main.c
+       src/ciss-parser.c
+       src/ciss-tapi-request.c
+       src/ciss-ussd.c
+       src/ciss-resp.c
+       src/ciss-widget.c
+       src/ciss-util.c
+       src/ciss-respnd.c
+       src/ciss-converter.c
+)
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(ciss_pkgs REQUIRED tapi appcore-efl glib-2.0 gobject-2.0 vconf elementary UI-idlecapture utilX dlog aul bundle ecore ecore-imf ecore-x ecore-input)
+FOREACH(flag ${ciss_pkgs_CFLAGS})
+       SET(CISS_EXTRA_CFLAGS "${CISS_EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CISS_EXTRA_CFLAGS}")
+
+ADD_EXECUTABLE(${APPNAME} ${CISS_SRCS})
+TARGET_LINK_LIBRARIES(${APPNAME} ${ciss_pkgs_LDFLAGS})
+
+ADD_CUSTOM_TARGET(ciss-mmi.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/resource/images
+               ${CMAKE_SOURCE_DIR}/resource/ciss-mmi.edc ${CMAKE_BINARY_DIR}/ciss-mmi.edj
+               DEPENDS ${CMAKE_SOURCE_DIR}/resource/ciss-mmi.edc
+)
+ADD_DEPENDENCIES(${APPNAME} ciss-mmi.edj)
+
+CONFIGURE_FILE(${PROJECT_NAME}.desktop.in ${CMAKE_SOURCE_DIR}/${PROJECT_NAME}.desktop)
+INSTALL(TARGETS ${APPNAME} DESTINATION bin)
+INSTALL(DIRECTORY DESTINATION ${DATADIR})
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/${PROJECT_NAME}.desktop DESTINATION /opt/share/applications/)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/ciss-mmi.edj DESTINATION ${EDJDIR})
+# i18n
+ADD_SUBDIRECTORY(po)
diff --git a/INSTALL b/INSTALL
new file mode 100755 (executable)
index 0000000..df57ce5
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,33 @@
+1. make the build directory
+
+  ex) 
+
+   $ mkdir build
+
+
+2. change the working directory to the build directory
+
+  ex)
+
+   $ cd build
+
+
+3. run 'cmake'
+
+  $ cmake ${SOURCE_DIR} - DCMAKE_INSTALL_PREFIX=/opt/apps/ciss
+
+  ex)
+
+   $ cmake .. -DCMAKE_INSTALL_PREFIX=/opt/apps/ciss
+
+   or
+
+   $ cmake ..
+
+
+4. make & make install
+
+  ex)
+
+   $ make -j 2 && make install
+
diff --git a/NOTICE b/NOTICE
new file mode 100755 (executable)
index 0000000..ded3804
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1 @@
+Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
\ No newline at end of file
diff --git a/debian/changelog b/debian/changelog
new file mode 100755 (executable)
index 0000000..2f9a8f3
--- /dev/null
@@ -0,0 +1,33 @@
+ciss (0.4.45) unstable; urgency=low
+
+  * Upload pkg.
+  * Apply EFL migration change
+  * Update boilerplate
+  * Git : pkgs/c/ciss
+  * Tag : ciss_0.4.45
+
+ -- Jungmin Kim <jm15.kim@samsung.com>  Fri, 17 Feb 2012 08:50:43 +0900
+ciss (0.4.44) unstable; urgency=low
+
+  * Upload pkg. 
+  * Git : pkgs/c/ciss
+  * Tag : ciss_0.4.44
+
+ -- Jungmin Kim <jm15.kim@samsung.com>  Mon, 09 Jan 2012 16:10:13 +0900
+ciss (0.4.43) unstable; urgency=low
+
+  * Rename org.tizen 
+  * Git : pkgs/c/ciss
+  * Tag : ciss_0.4.43
+
+ -- Jungmin Kim <jm15.kim@samsung.com>  Thu, 22 Dec 2011 20:21:47 +0900
+ciss (0.4.42) unstable; urgency=low
+
+  * Git init 
+  * Git : pkgs/c/ciss
+  * Tag : ciss_0.4.42
+
+ -- Jungmin Kim <jm15.kim@samsung.com>  Fri, 16 Dec 2011 12:47:55 +0900
diff --git a/debian/compat b/debian/compat
new file mode 100755 (executable)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100755 (executable)
index 0000000..a4b087d
--- /dev/null
@@ -0,0 +1,19 @@
+Source: ciss
+Section: devel
+Priority: extra
+Maintainer: Jungmin Kim <jm15.kim@samsung.com>, Sungjoon Won <sungjoon.won@samsung.com>
+Uploaders: Jungmin Kim <jm15.kim@samsung.com>, Sungjoon Won <sungjoon.won@samsung.com>
+Build-Depends: debhelper (>= 5), autotools-dev, libappcore-efl-dev, libelm-dev, libui-idlecapture-dev, libslp-tapi-dev, libslp-utilx-dev, libbundle-dev, libaul-1-dev, dlog-dev
+Standards-Version: 0.1.0
+
+Package: org.tizen.ciss
+Section: devel
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: CISS-MMI application
+
+Package: org.tizen.ciss-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, org.tizen.ciss-dbg (= ${Source-Version})
+Description: CISS-MMI application
diff --git a/debian/copyright b/debian/copyright
new file mode 100755 (executable)
index 0000000..c4cf4de
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
diff --git a/debian/dirs b/debian/dirs
new file mode 100755 (executable)
index 0000000..ca882bb
--- /dev/null
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/debian/docs b/debian/docs
new file mode 100755 (executable)
index 0000000..7a77580
--- /dev/null
@@ -0,0 +1,2 @@
+CMakeCache.txt
+CMakeLists.txt
diff --git a/debian/org.tizen.ciss.install.in b/debian/org.tizen.ciss.install.in
new file mode 100755 (executable)
index 0000000..b27a08b
--- /dev/null
@@ -0,0 +1,5 @@
+@PREFIX@/bin/*
+@PREFIX@/res/locale/*
+@PREFIX@/data
+@PREFIX@/res/edje/*
+/opt/share/applications/*
diff --git a/debian/org.tizen.ciss.postinst.in b/debian/org.tizen.ciss.postinst.in
new file mode 100755 (executable)
index 0000000..aa339a0
--- /dev/null
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+if [ ${USER} == "root" ]
+then
+        # 5000 is inhouse user id
+        # do not use relative path
+        chown -R 5000:5000 @PREFIX@/data
+fi
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..95e7d51
--- /dev/null
@@ -0,0 +1,138 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+PREFIX ?= /opt/apps/org.tizen.ciss
+RESDIR ?= /opt/apps/org.tizen.ciss/res
+DATADIR ?= /opt/apps/org.tizen.ciss/data
+CFLAGS ?=
+CFLAGS += -Wall -g -fpie
+CXXFLAGS ?=
+CXXFLAGS += -Wall -g -fpie
+LDFLAGS ?=
+LDFLAGS += -Wl,--hash-style=both -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed -pie
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+       CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" cmake . -DCMAKE_INSTALL_PREFIX=$(PREFIX)
+
+       touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp 
+       dh_testdir
+
+       # Add here commands to compile the package.
+       $(MAKE)
+       #docbook-to-man debian/calllog.sgml > calllog.1
+
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+               cat $$f > $${f%.in}; \
+               sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
+               sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \
+               sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
+       done
+
+       touch $@
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+       # Add here commands to clean up after the build process.
+       -$(MAKE) clean
+       rm -rf CMakeCache.txt
+       rm -rf CMakeFiles
+       rm -rf cmake_install.cmake
+       rm -rf Makefile
+       rm -rf install_manifest.txt
+       rm -rf *.so
+       rm -rf po/CMakeCache.txt
+       rm -rf po/CMakeFiles
+       rm -rf po/cmake_install.cmake
+       rm -rf po/Makefile
+       rm -rf po/install_manifest.txt
+       rm -rf po/*.so
+       rm -rf data/CMakeCache.txt
+       rm -rf data/CMakeFiles
+       rm -rf data/cmake_install.cmake
+       rm -rf data/Makefile
+       rm -rf data/install_manifest.txt
+       rm -rf data/*.so
+       
+       rm -rf *.desktop
+       rm -rf *.edj
+       rm -rf theme/*.edj
+
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+               rm -f $${f%.in}; \
+       done
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/calllog.
+       $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs 
+       dh_installdocs
+       dh_installexamples
+       dh_install --sourcedir=debian/tmp
+#      dh_installmenu
+#      dh_installdebconf       
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_python
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+       dh_installman
+       dh_link
+#      dh_strip
+       dh_strip --dbg-package=org.tizen.ciss-dbg
+       dh_compress
+       dh_fixperms
+#      dh_perl
+       dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/include/ciss-common.h b/include/ciss-common.h
new file mode 100755 (executable)
index 0000000..5338d30
--- /dev/null
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#ifndef __CISS_MMI_H__
+#define __CISS_MMI_H__
+#include <ITapiSs.h>
+#include <Elementary.h>
+#include <vconf.h>
+#include <Ecore_IMF.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <sqlite3.h>
+
+#include "ciss-types.h"
+#include "ciss-debug.h"
+#include "ciss-string.h"
+
+#ifndef PREFIX
+#define PREFIX "/usr"
+#endif
+
+#ifdef _
+#undef _
+#endif
+
+#ifdef N_
+#undef N_
+#endif
+
+#define PACKAGE "org.tizen.ciss"
+#if !defined(LOCALEDIR)
+    #  define LOCALEDIR "/opt/apps/org.tizen.ciss/res/locale"
+#endif
+
+#if !defined(EDJDIR)
+    #  define EDJDIR "/opt/apps/org.tizen.ciss/res/edje"
+#endif
+       
+#define EDJ_PATH EDJDIR
+#define EDJ_NAME EDJDIR"/ciss-mmi.edj"
+#define GRP_MAIN "main"
+#define IMG_DIR "/opt/apps/"PACKAGE"/res/images"
+
+#define _(s)           gettext(s)
+#define _EDJ(o)                elm_layout_edje_get(o)
+
+#define REQ_STRING_MAX_LEN             255
+#define MAX_PWD_CHAR                   4
+#define MAX_SC_ENTRY                   20
+#define MAX_USS_CHAR                   160                     /**< Max num of char is USS data*/
+#define MAX_SC_LEN                     3       /**< Maximum length of service code */
+#define ENCODE_TYPE_GSM                        0x0F    /**< the value of the GSM encoding fromat for ussd */
+#define CISS_MMI_MAX_USSD_RESP_STRING  300
+#define CISS_MMI_MAX_SS_RESP_STRING    1664
+#define POPUP_DISPLAY_DURATION         10.0
+
+#define registerSS                      10
+#define eraseSS                         11
+#define activateSS                      12
+#define deactivateSS                    13
+#define interrogateSS                   14
+#define notifySS                        16
+#define registerPassword                17
+#define getPassword                     18
+#define processUnstructuredSS_Data      19
+#define forwardCheckSS_Indication       38
+#define processUnstructuredSS_Request   59
+#define unstructuredSS_Request          60
+#define unstructuredSS_Notify           61
+
+
+typedef enum {
+       REQUEST_MODE,   /* 0 */
+       RESPONSE_MODE,
+} launching_mode_t;
+
+
+/**
+ * The MMI string context
+ */
+typedef struct {
+       unsigned char                   opcode;
+       char                            user_string[MAX_USS_CHAR];                      /**< String to be parsed */
+       int                             user_string_length;                             /**< length of string */
+       unsigned char                   dcs;                                            /**< the data coding scheme for ussd */
+       unsigned char                   ss_flavor;                                      /**< current SS code being processed */
+       unsigned char                   ss_type;                                        /**< barring, forwarding, waiting, etc */
+       TelSsTeleService_t              tapi_bsg;                                       /**< The Basic Service Code */
+       char                            divert_number[CISS_NUMBER_LEN_MAX+1];           /**< call forwarding number*/
+       char                            nr_timer;                                       /**< No Reply Timer */
+       char                            ss_password[CISS_MAX_PASSWORD_LEN+1];           /**< remember password if supplied so that */
+       char                            ss_new_password[CISS_MAX_PASSWORD_LEN+1];       /**< remember new password  */
+       char                            ss_new_password2[CISS_MAX_PASSWORD_LEN+1];      /**< remember the new pwd supplied again */
+       char                            fdn_string[10];                                 /**< FDN string*/
+       char                            ss_code[MAX_SC_LEN + 1];                        /**< the ss code */
+
+}ciss_mmi_context_t;
+
+struct appdata {
+       Evas *evas;
+
+       Evas_Object *win_main;
+       Evas_Object *indicator;
+       Evas_Object *nf;
+       Evas_Object *layout_main;
+       Evas_Object *content;
+       Evas_Object *view;
+       Evas_Object *popup;
+       Evas_Object *entry;
+       Evas_Object *ef_entry, *ef_layout;
+
+       Evas_Object *button;
+
+       Evas_Object *bg;
+
+       Elm_Object_Item *c_item[3];
+       Ecore_Timer *timer;
+       Ecore_Event_Handler *ise_event_handler;
+       Ecore_Event_Handler *end_key_event_handler;
+       Ecore_IMF_Context *imf_context;
+       Elm_Genlist_Item_Class *itc_ime;
+       Elm_Genlist_Item_Class *itc_multi_line;
+
+       TelSsInfo_t ss_info;
+       ciss_mmi_context_t mmi_ctx;
+
+       int launch_mode;
+       int cmd_type;
+       int cmd_id;
+       Eina_Bool is_sat_request;
+       int ussd_action_require;
+       int request_id;
+       unsigned char rel_comp_msg[TAPI_MAX_RELEASE_COMPLETE_DATA_LEN];
+       int rel_comp_msg_len;
+
+       char input[256];
+       char req_string[REQ_STRING_MAX_LEN];
+
+};
+
+typedef struct {
+       int     even_class;     /**< Event Class */
+       int     event_type;     /**< Event type */
+       int     request_id;     /**<  This parameter is applicable only for Asynchronous solicited responses. The request id    for a service request is sent back in the asynchronous response. For unsolicited indications, request id will be -1 */
+       int     status;         /**< This parameter is applicable only for Asynchronous solicited responses. This       status parameter informs the actual result of Asynchronous response. For unsolicited indications, status will be -1  */
+       void    *p_data;        /**< Event Data - Based on Event type response/indications. Event data information is captured in each API Section  */
+       int     data_length;    /**< Event Data size */
+} ciss_tapi_event_t;
+
+#endif /* __CISS_MMI_H__ */
+
diff --git a/include/ciss-converter.h b/include/ciss-converter.h
new file mode 100755 (executable)
index 0000000..16b4c40
--- /dev/null
@@ -0,0 +1,232 @@
+/*\r
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved \r
+ *\r
+ * This file is part of <ciss>\r
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall use it only in accordance\r
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability of the software,\r
+ * either express or implied, including but not limited to the implied warranties of merchantability,\r
+ * fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,\r
+ * modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+#ifndef _CISS_CONVERTER_MMI_H_\r
+#define _CISS_CONVERTER_MMI_H_\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+\r
+#include "ITapiSs.h"\r
+#include "ciss-common.h"\r
+#include <glib.h>\r
+\r
+#define MAX_BSG_LEN            2\r
+\r
+   /* ALS_SUPPORT bug id: QCOM00001874 : entry increment by one for auxilliary telephony: Hari */\r
+#ifdef FEATURE_SAMSUNG_ALS\r
+#define MAX_BSG_ENTRY          47\r
+#else\r
+#define MAX_BSG_ENTRY          46\r
+#endif\r
+\r
+/*\r
+** Local Supplementary Service Codes (SC)\r
+*/\r
+\r
+#define CISS_ENG_SC_ALL               ""\r
+#define CISS_ENG_SC_CF                "002"\r
+#define CISS_ENG_SC_CFC               "004"\r
+#define CISS_ENG_SC_CFU               "21"\r
+#define CISS_ENG_SC_CFB               "67"\r
+#define CISS_ENG_SC_CFNRY             "61"\r
+#define CISS_ENG_SC_CFNRC             "62"\r
+#define CISS_ENG_SC_CLIP              "30"\r
+#define CISS_ENG_SC_CLIR              "31"\r
+#define CISS_ENG_SC_COLP              "76"\r
+#define CISS_ENG_SC_COLR              "77"\r
+#define CISS_ENG_SC_CNAP              "300"\r
+#define CISS_ENG_SC_CW                "43"\r
+#define CISS_ENG_SC_B                 "330"\r
+#define CISS_ENG_SC_OB                "333"\r
+#define CISS_ENG_SC_IB                "353"\r
+#define CISS_ENG_SC_BAOC              "33"\r
+#define CISS_ENG_SC_BOIC              "331"\r
+#define CISS_ENG_SC_BOICEXHC          "332"\r
+#define CISS_ENG_SC_BAIC              "35"\r
+#define CISS_ENG_SC_BICROAM           "351"\r
+\r
+/*\r
+** Local Basic Service Codes\r
+*/\r
+\r
+#define CISS_ENG_BSG_ALL              ""\r
+#define CISS_ENG_BSG_ALL_TS           "10"\r
+#define CISS_ENG_BSG_TELEPHONY        "11"\r
+/* ALS_SUPPORT : added MMI code for auxilliary telephony */\r
+#ifdef FEATURE_SAMSUNG_ALS\r
+#define CISS_ENG_BSG_AUX_TELEPHONY   "89"\r
+#endif\r
+#define CISS_ENG_BSG_ALL_DATA         "12"\r
+#define CISS_ENG_BSG_FAX              "13"\r
+#define CISS_ENG_BSG_SMS              "16"\r
+#define CISS_ENG_BSG_ALL_TELE_EX_SMS  "19"\r
+#define CISS_ENG_BSG_PLMN_TELE_ALL    "50"\r
+#define CISS_ENG_BSG_PLMN_TELE_1      "51"\r
+#define CISS_ENG_BSG_PLMN_TELE_2      "51"\r
+#define CISS_ENG_BSG_PLMN_TELE_3      "53"\r
+#define CISS_ENG_BSG_PLMN_TELE_4      "54"\r
+#define CISS_ENG_BSG_PLMN_TELE_5      "55"\r
+#define CISS_ENG_BSG_PLMN_TELE_6      "56"\r
+#define CISS_ENG_BSG_PLMN_TELE_7      "57"\r
+#define CISS_ENG_BSG_PLMN_TELE_8      "58"\r
+#define CISS_ENG_BSG_PLMN_TELE_9      "59"\r
+#define CISS_ENG_BSG_PLMN_TELE_A      "60"\r
+#define CISS_ENG_BSG_PLMN_TELE_B      "61"\r
+#define CISS_ENG_BSG_PLMN_TELE_C      "62"\r
+#define CISS_ENG_BSG_PLMN_TELE_D      "63"\r
+#define CISS_ENG_BSG_PLMN_TELE_E      "64"\r
+#define CISS_ENG_BSG_PLMN_TELE_F      "65"\r
+\r
+#define CISS_ENG_BSG_ALL_BS           "20"\r
+#define CISS_ENG_BSG_ALL_ASYNC        "21"\r
+#define CISS_ENG_BSG_ALL_SYNC         "22"\r
+#define CISS_ENG_BSG_ALL_DC_SYNC      "24"\r
+#define CISS_ENG_BSG_ALL_DC_ASYNC     "25"\r
+#define CISS_ENG_BSG_ALL_DED_PACKET   "26"\r
+#define CISS_ENG_BSG_ALL_DED_PAD      "27"\r
+#define CISS_ENG_BSG_12_KBIT          "29"\r
+#define CISS_ENG_BSG_PLMN_BEAR_ALL    "70"\r
+#define CISS_ENG_BSG_PLMN_BEAR_1      "71"\r
+#define CISS_ENG_BSG_PLMN_BEAR_2      "71"\r
+#define CISS_ENG_BSG_PLMN_BEAR_3      "73"\r
+#define CISS_ENG_BSG_PLMN_BEAR_4      "74"\r
+#define CISS_ENG_BSG_PLMN_BEAR_5      "75"\r
+#define CISS_ENG_BSG_PLMN_BEAR_6      "76"\r
+#define CISS_ENG_BSG_PLMN_BEAR_7      "77"\r
+#define CISS_ENG_BSG_PLMN_BEAR_8      "78"\r
+#define CISS_ENG_BSG_PLMN_BEAR_9      "79"\r
+#define CISS_ENG_BSG_PLMN_BEAR_A      "80"\r
+#define CISS_ENG_BSG_PLMN_BEAR_B      "81"\r
+#define CISS_ENG_BSG_PLMN_BEAR_C      "82"\r
+#define CISS_ENG_BSG_PLMN_BEAR_D      "83"\r
+#define CISS_ENG_BSG_PLMN_BEAR_E      "84"\r
+#define CISS_ENG_BSG_PLMN_BEAR_F      "85"\r
+\r
+typedef enum {\r
+       NO_CODE = -1,\r
+       BS_CODE,\r
+       TS_CODE,\r
+       MAX_CODE\r
+} bsg_code_type;\r
+\r
+\r
+typedef struct {\r
+       char*                   local_sc;       /* local value of Service Code */\r
+       unsigned char           tapi_flavor;    /* TAPI flavor */\r
+       unsigned char           ss_type;        /* barring, fwding, waiting, etc*/\r
+} sc_table_element_type;\r
+\r
+\r
+/* convert between local and network BSG values */\r
+typedef struct {\r
+       char                    *local_bsg;     /* local BSG value */\r
+       char                    bsg_type;       /* BSG type - bearer services, teleservices */\r
+       TelSsTeleService_t      tapi_bsg_code;  /* TAPI BSG value */\r
+} bsg_table_element_type;\r
+\r
+int _ciss_convert_bsg_to_tapi_bsg(char *local_bsg, TelSsTeleService_t *tapi_bsg);\r
+int _ciss_convert_sc_to_tapi_flavor(char *sc, unsigned char *tapi_flavor, unsigned char *ss_type);\r
+\r
+/* temporarily added : need to correct when changes are finalized\r
+added for call divert type */\r
+int _ciss_get_tapi_forward_type(TelSsTeleService_t TelecommSvc, TelSsForwardType_t *pForwardType);\r
+\r
+/* temporarily added : need to correct when changes are finalized\r
+added for call barring type and call waiting */\r
+int _ciss_get_tapi_call_type(TelSsTeleService_t TelecommSvc, TelSsCallType_t *pCallType);\r
+\r
+/**\r
+ * This function gets the ciss error from the tapi error.\r
+ *\r
+ * @return                                             This function returns TRUE on success, or false on failure.\r
+ * @param[in]          tapi_err                        the tapi error\r
+ * @param[out] ciss_err                        the ciss error.\r
+ */\r
+int _ciss_get_error_from_tapi_error(ciss_err_t *ciss_err, TelSsCause_t tapi_err);\r
+\r
+/**\r
+ * This function gets the tapi ussd repsonse type from ciss repsonse type.\r
+ *\r
+ * @return                                             This function returns TRUE on success, or false on failure.\r
+ * @param[in]          resp_type               the ciss repsonse type\r
+ * @param[out] p_tapi_resptype the tapi repsonse type.\r
+ */\r
+int _ciss_get_tapi_ussd_resp_type(ciss_ussd_response_type_t resp_type, TelSsUssdRespType_t *p_tapi_resptype);\r
+\r
+/**\r
+ * This function gets the tapi ussd indication type from ciss indication type.\r
+ *\r
+ * @return                                             This function returns TRUE on success, or false on failure.\r
+ * @param[in]          ind_type                        the ciss indication type\r
+ * @param[out] p_tapi_indtype  the tapi indication type.\r
+ */\r
+int _ciss_get_tapi_ussd_ind_type(ciss_ussd_ind_type_t ind_type, TelSsUssdIndType_t *p_tapi_indtype);\r
+\r
+/**\r
+ * This function gets the ciss sbse service from the tapi tele service\r
+ *\r
+ * @return                                             This function returns TRUE on success, or false on failure.\r
+ * @param[in]          tapi_tele_service       the tapi tele service\r
+ * @param[out] ciss_tele_service       the ciss tele service\r
+ */\r
+int _ciss_get_telecomm_svc(TelSsTeleService_t in_teleservice, ciss_telecomm_svc_t *out_teleservice);\r
+\r
+/**\r
+ * This function gets the ciss flavor type of call forward from the tapi flavor type\r
+ *\r
+ * @return                                             This function returns TRUE on success, or false on failure.\r
+ * @param[in]          tapi_flavor_type        the tapi flavor type\r
+ * @param[out] ciss_flavor_type        the ciss flavor type\r
+ */\r
+int _ciss_get_forward_flavor_type(TelSsForwardWhen_t in_flavor, ciss_flavor_t *out_flavor);\r
+\r
+/**\r
+ * This function gets the ciss flavor type of call barring from the tapi flavor type\r
+ *\r
+ * @return                                             This function returns TRUE on success, or false on failure.\r
+ * @param[in]          tapi_flavor_type        the tapi flavor type\r
+ * @param[out] ciss_flavor_type        the ciss flavor type\r
+ */\r
+int _ciss_get_barring_flavor_type(TelSsCallBarType_t in_flavor, ciss_flavor_t *out_flavor);\r
+\r
+/**\r
+ * This function gets the ciss status type from the tapi status type\r
+ *\r
+ * @return                                             This function returns TRUE on success, or false on failure.\r
+ * @param[in]          tapi_status_type                the tapi status type.\r
+ * @param[out] ciss_status_type                the ciss status type.\r
+ */\r
+int _ciss_get_result_status_type(TelSsStatus_t in_status, ciss_status_t *out_status);\r
+\r
+/**\r
+ * This function gets the ciss indication type from the tapi indication type\r
+ *\r
+ * @return                                             This function returns TRUE on success, or false on failure.\r
+ * @param[in]          tapi_indtype            the tapi indication type.\r
+ * @param[out] p_ind_type              the ciss indication type.\r
+ */\r
+int _ciss_get_requested_tapi_ussd_ind_type(ciss_ussd_ind_type_t *p_ind_type, TelSsUssdIndType_t tapi_indtype);\r
+\r
+void _ciss_ui_mmi_get_service_name(ciss_service_t in_service, char *service_name);\r
+void _ciss_ui_mmi_get_flavor_name(ciss_flavor_t in_flavor, char *flavor_name);\r
+void _ciss_ui_mmi_get_bearer_name(ciss_service_t ss_type, ciss_telecomm_svc_t in_teleservice, char *teleservice_name);\r
+void _ciss_ui_mmi_get_result_status_type(ciss_service_t ss_type, ciss_status_t result_status, char *szResult);\r
+#endif /* _CISS_CONVERTER_MMI_H_ */\r
diff --git a/include/ciss-debug.h b/include/ciss-debug.h
new file mode 100755 (executable)
index 0000000..02dd6aa
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include <dlog.h>
+#ifndef CISS_LOG_TAG
+#define CISS_LOG_TAG "CISS"
+#endif
+
+#define DBG(fmt, arg...) \
+       do { \
+               LOG(LOG_INFO, CISS_LOG_TAG, "[CISS][%s:%d] "fmt"\n",  __func__, __LINE__, ##arg); \
+       } while(0)
+
+#define ERR(fmt, arg...) \
+       do { \
+               LOGE(""fmt"\n", ##arg); \
+       } while(0)
+
+#  define warn_if(expr, fmt, arg...) do { \
+               if(expr) { \
+                       DBG("(%s) -> "fmt, #expr, ##arg); \
+               } \
+       } while (0)
+#  define ret_if(expr) do { \
+               if(expr) { \
+                       DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
+                       return; \
+               } \
+       } while (0)
+#  define retv_if(expr, val) do { \
+               if(expr) { \
+                       DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
+                       return (val); \
+               } \
+       } while (0)
+#  define retm_if(expr, fmt, arg...) do { \
+               if(expr) { \
+                       ERR(fmt, ##arg); \
+                       DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
+                       return; \
+               } \
+       } while (0)
+#  define retvm_if(expr, val, fmt, arg...) do { \
+               if(expr) { \
+                       ERR(fmt, ##arg); \
+                       DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
+                       return (val); \
+               } \
+       } while (0)
+
diff --git a/include/ciss-parser.h b/include/ciss-parser.h
new file mode 100755 (executable)
index 0000000..ed9c767
--- /dev/null
@@ -0,0 +1,56 @@
+/*\r
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved \r
+ *\r
+ * This file is part of <ciss>\r
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall use it only in accordance\r
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability of the software,\r
+ * either express or implied, including but not limited to the implied warranties of merchantability,\r
+ * fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,\r
+ * modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+#ifndef _CISS_PARSE_MMI_H_\r
+#define _CISS_PARSE_MMI_H_\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+\r
+#include "ITapiSs.h"\r
+#include "ciss-common.h"\r
+#include <glib.h>\r
+\r
+#define ISDIGIT(X) ((X >= '0') && (X <= '9'))\r
+#define ISUSSDDIGIT(X) ((X >= '2') && (X <= '9'))\r
+#define MAX_DIALED_DIGITS  160\r
+\r
+/***************************************************************************\r
+ *  Macros\r
+ **************************************************************************/\r
+/* user inputs for supplementary services */\r
+\r
+#define MAX_SIA_LEN            40\r
+#define MAX_SIB_LEN            4   /* PWD LEN */\r
+#define MAX_SIC_LEN            4   /* PWD LEN */\r
+\r
+#define NULL_SS_OPERATION      0xff\r
+\r
+/**\r
+ * This function processes the responses from telephony based on the current state\r
+ *\r
+ * @return                                             Returns TRUE if request is successfully processed else false\r
+ * @param[in]          this                            Pointer to the engine state\r
+ * @param[in]          req_string              string to be processed\r
+ */\r
+int _ciss_parse_req_string(char *req_string, ciss_mmi_context_t *mmi_ctx);\r
+\r
+#endif /* _CISS_PARSE_MMI_H_ */\r
+\r
diff --git a/include/ciss-resp.h b/include/ciss-resp.h
new file mode 100755 (executable)
index 0000000..3c0128f
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#ifndef _CISS_MMI_RESP_H_
+#define _CISS_MMI_RESP_H_
+
+#include <Elementary.h>
+#include <ITapiSs.h>
+
+Evas_Object *_ciss_create_ss_resp_view(Evas_Object *parent, TelSsInfo_t *ss_info, void *data);
+
+#endif
+
diff --git a/include/ciss-respnd.h b/include/ciss-respnd.h
new file mode 100755 (executable)
index 0000000..f4eacfc
--- /dev/null
@@ -0,0 +1,30 @@
+/*\r
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved \r
+ *\r
+ * This file is part of <ciss>\r
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall use it only in accordance\r
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability of the software,\r
+ * either express or implied, including but not limited to the implied warranties of merchantability,\r
+ * fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,\r
+ * modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+#ifndef _CISS_MMI_RESPND_H_\r
+#define _CISS_MMI_RESPND_H_\r
+\r
+#include <Elementary.h>\r
+#include <ITapiSs.h>\r
+#include "ciss-ussd.h"\r
+\r
+void _ciss_create_respond_view(void *data);\r
+\r
+#endif\r
+\r
diff --git a/include/ciss-string.h b/include/ciss-string.h
new file mode 100755 (executable)
index 0000000..0cd224c
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#define CISS_STR_ALL_CALLS                                                     _("IDS_CST_BODY_ALL_CALLS")
+#define CISS_STR_CALL_DIVERTING                                        _("IDS_CST_BODY_CALL_DIVERTING")
+#define CISS_STR_CALL_BARRING                                          _("IDS_CST_BODY_CALL_BARRING")
+#define CISS_STR_CALL_WAITING                                          _("IDS_CST_BODY_CALL_WAITING")
+#define CISS_STR_SERVICE_UNAVAILABLE                           _("IDS_CST_POP_SERVICE_UNAVAILABLE")
+
+#define CISS_STR_SERVICE_NOT_AUTHORISED                        _("IDS_CST_POP_SERVICE_NOT_AUTHORISED")
+#define CISS_STR_PASSWORD_BLOCKED                              _("IDS_CST_POP_PASSWORD_BLOCKED")
+#define CISS_STR_INVALID_PASSWORD                                      _("IDS_CST_POP_INVALID_PASSWORD")
+#define CISS_STR_REJECTED_BY_NETWORK                           _("IDS_CST_POP_REJECTED_BY_NETWORK")
+#define CISS_STR_REQUESTING                                            _("IDS_CST_POP_REQUESTING_ING")
+
+#define CISS_STR_ALL_ASYNCHRONOUS_DATA                 _("IDS_CST_POP_ALL_ASYNCHRONOUS_DATA")
+#define CISS_STR_ALL_BEARER_SERVICES                           _("IDS_CST_POP_ALL_BEARER_SERVICES")
+#define CISS_STR_ALL_DATA_SERVICES                             _("IDS_CST_POP_ALL_DATA_SERVICES")
+#define CISS_STR_ALL_PADCA_SERVICES                            _("IDS_CST_POP_ALL_PADCA_SERVICES")
+#define CISS_STR_ALL_PDS_SERVICES                                      _("IDS_CST_POP_ALL_PDS_SERVICES")
+#define CISS_STR_ALL_PLMN_BEARERS                                      _("IDS_CST_POP_ALL_PLMN_BEARERS")
+#define CISS_STR_ALL_SERVICES                                          _("IDS_CST_POP_ALL_SERVICES")
+#define CISS_STR_ALL_SYNCHRONOUS_SERVICES              _("IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES")
+#define CISS_STR_ALL_TELECOM_SERVICES                          _("IDS_CST_POP_ALL_TELECOM_SERVICES")
+#define CISS_STR_ASYNCHRONOUS_DATA_SERVICES            _("IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES")
+#define CISS_STR_FOR_ALL_TELE_SERVICES_EXCEPT_SMS      _("IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS")
+#define CISS_STR_FAX                                   _("IDS_CST_BODY_FAX")
+
+#define CISS_STR_ENTER_NUMBER                                          _("IDS_CST_BODY_ENTER_NUMBER")
+#define CISS_STR_QUIT                                                          dgettext("sys_string", "IDS_COM_SK_QUIT")
+#define CISS_STR_CALLER_ID_SHOWN                                       _("IDS_CST_POP_CALLER_ID_SHOWN")
+#define CISS_STR_CALLER_ID_HIDDEN                                      _("IDS_CST_POP_CALLER_ID_HIDDEN")
+#define CISS_STR_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING _("IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING")
+#define CISS_STR_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING _("IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING")
+#define CISS_STR_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS _("IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS")
+#define CISS_STR_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS _("IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS")
+#define CISS_STR_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING _("IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING")
+#define CISS_STR_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING _("IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING")
+#define CISS_STR_CALLER_ID_AVAILABLE                           _("IDS_CST_POP_CALLER_ID_AVAILABLE")
+#define CISS_STR_CALLER_ID_RESTRICTED                          _("IDS_CST_POP_CALLER_ID_RESTRICTED")
+#define CISS_STR_CHANGE_PASSWORD                               _("IDS_CST_OPT_CHANGE_PASSWORD")
+#define CISS_STR_CALL_DIVERTING_ACTIVE_C_ALWAYS        _("IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS")
+#define CISS_STR_CALL_DIVERTING_ACTIVE_C_WHEN_NOREPLY  _("IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER")
+#define CISS_STR_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY _("IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY")
+#define CISS_STR_CALL_DIVERTING_ACTIVE_C_UNREACHABLE _("IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE")
+
+#define CISS_STR_CONDITIONAL                                            _("IDS_CST_HEADER_CONDITIONAL")
+#define CISS_STR_ALL_OUTGOING_CALLS_BARRED                     _("IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED")
+#define CISS_STR_OUTGOING_INTERNATIONAL_CALLS_BARRED   _("IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED")
+#define CISS_STR_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED _("IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED")
+#define CISS_STR_ALL_INCOMING_CALLS_BARRED             _("IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED")
+#define CISS_STR_INCOMING_CALLS_BARRED_WHEN_ROAMING _("IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING")
+#define CISS_STR_ALL_BARRING                                           _("IDS_ST_POP_ALL_BARRING")
+#define CISS_STR_OUTGOING_BARRING                              _("IDS_ST_POP_OUTGOING_BARRING")
+#define CISS_STR_INCOMING_BARRING                              _("IDS_ST_POP_INCOMING_BARRING")
+
+#define CISS_STR_SUCCESS                                                       dgettext("sys_string", "IDS_COM_POP_SUCCESS")
+#define CISS_STR_REPLY                                                         dgettext("sys_string", "IDS_COM_SK_REPLY")
+#define CISS_STR_ACTIVATED                                                     dgettext("sys_string", "IDS_COM_BODY_ACTIVATED")
+#define CISS_STR_DEACTIVATED                                           dgettext("sys_string", "IDS_COM_POP_DEACTIVATED")
+#define CISS_STR_VOICE                                                         dgettext("sys_string", "IDS_COM_BODY_VOICE")
+#define CISS_STR_VIDEO                                                         dgettext("sys_string", "IDS_COM_BODY_VIDEO")
+#define CISS_STR_SMS                                                           dgettext("sys_string", "IDS_COM_BODY_SMS")
+#define CISS_STR_NETWORK_ERROR                                 dgettext("sys_string", "IDS_COM_POP_NETWORK_ERROR")
+#define CISS_STR_INFORMATION                                           dgettext("sys_string", "IDS_COM_BODY_INFORMATION")
diff --git a/include/ciss-tapi-request.h b/include/ciss-tapi-request.h
new file mode 100755 (executable)
index 0000000..24532bc
--- /dev/null
@@ -0,0 +1,56 @@
+/*\r
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved \r
+ *\r
+ * This file is part of <ciss>\r
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall use it only in accordance\r
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability of the software,\r
+ * either express or implied, including but not limited to the implied warranties of merchantability,\r
+ * fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,\r
+ * modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+#ifndef _CISS_MMI_TAPI_EVENTS_H_\r
+#define _CISS_MMI_TAPI_EVENTS_H_\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+\r
+#include "ciss-types.h"\r
+#include "ciss-common.h"\r
+#include <ITapiSs.h>\r
+#include <TapiEvent.h>\r
+\r
+/**\r
+ * This function sends request to the TAPI\r
+ *\r
+ * @return                                             This function returns CISS_ERR_NONE on success, or error type on failure.\r
+ * @param[in]          ciss_mmi_context_t      the ciss mmi context type\r
+ */\r
+\r
+int _ciss_tapi_event_setup(struct appdata *ad);\r
+\r
+void _ciss_deregister_tel_event(void);\r
+\r
+ciss_err_t _ciss_send_tapi_request(ciss_mmi_context_t *mmi_ctx);\r
+\r
+int _ciss_on_tapi_ss_event(const TelTapiEvent_t *event, void *data);\r
+int _ciss_on_tapi_ss_rel_complete_noti(const TelTapiEvent_t *event, void *data);\r
+int _ciss_on_tapi_ussd_event(const TelTapiEvent_t *event, void *data);\r
+int _ciss_on_tapi_sat_ss_event(const TelTapiEvent_t *event, void *data);\r
+int _ciss_on_tapi_sat_ussd_event(const TelTapiEvent_t *event, void *data);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+\r
+#endif /* _CISS_TAPI_EVENTS_H_ */\r
+\r
diff --git a/include/ciss-types.h b/include/ciss-types.h
new file mode 100755 (executable)
index 0000000..c38d622
--- /dev/null
@@ -0,0 +1,451 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#ifndef _CISS_ENGINE_TYPES_H_
+#define _CISS_ENGINE_TYPES_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define        MID_CISS                        0x201E0012
+#define        CISS_MODULE_ID                  22
+#define CISS_NUMBER_LEN_MAX            40      /**< Maximum length of number */
+#define        CISS_MAX_PASSWORD_LEN           4       /**< Maximum length of barring password */
+#define        CISS_STR_BUFFER_MAX             70      /**< Maximum size of string buffer */
+#define        CISS_TEXT_LEN_MAX               150     /**< Maximum lenght of text for application */
+#define CISS_CALL_NUMBER_LEN_MAX       80      /**< Maximum call number length */
+#define CISS_MAX_SS_RECORDS            8       /**< Maximum number of SS records */
+#define        CISS_USSD_DATA_SIZE_MAX         208     /**< Maximum length of USSD data */
+#define        CISS_DIVERT_NUMBER_LEN_MAX      32      /**< Maximum length of Divert to number */
+#define        CISS_TAPI_NW_USSD_HANDLE        255     /**< Mapped to the OEM_INVALID_REQUEST_ID of Tapi - OemTapiCommon.h*/
+
+#ifdef CISS_SYSLOG
+#define CISS_ENG_LEVEL_DEBUG           LOG_DEBUG               /**< Messages that contain information normally of use only when debugging a program */
+#define CISS_ENG_LEVEL_INFO            LOG_INFO                /**< Informational messages.*/
+#define CISS_ENG_LEVEL_NOTICE          LOG_NOTICE              /**< Conditions that are not error conditions, but should possibly be handled specially.*/
+#define CISS_ENG_LEVEL_WARNING         LOG_WARNING             /**< Warning messages.*/
+#define CISS_ENG_LEVEL_ERR             LOG_ERR                 /**< Errors. */
+#define CISS_ENG_LEVEL_CRIT            LOG_CRIT                /**< Critical conditions, e.g., hard device errors. */
+#define CISS_ENG_LEVEL_ALERT           LOG_ALERT               /**< A condition that should be corrected immediately, such as a corrupted system database. */
+#define CISS_ENG_LEVEL_EMERG           LOG_EMERG               /**< A panic condition.  This is normally broadcast to all users. */
+#elif  CISS_DEBUG_MESSAGE
+#define CISS_ENG_LEVEL_DEBUG           DEBUG_VERBOSE
+#define CISS_ENG_LEVEL_INFO            DEBUG_VERBOSE
+#define CISS_ENG_LEVEL_NOTICE          DEBUG_VERBOSE
+#define CISS_ENG_LEVEL_WARNING                 DEBUG_EXCEPTION
+#define CISS_ENG_LEVEL_ERR             DEBUG_EXCEPTION
+#define CISS_ENG_LEVEL_CRIT            DEBUG_ASSERT
+#define CISS_ENG_LEVEL_ALERT           DEBUG_EXCEPTION
+#define CISS_ENG_LEVEL_EMERG           DEBUG_EXCEPTION
+#else
+#define CISS_ENG_LEVEL_DEBUG           LOG_DEBUG               /**< Messages that contain information normally of use only when debugging a program */
+#define CISS_ENG_LEVEL_INFO            LOG_INFO                /**< Informational messages.*/
+#define CISS_ENG_LEVEL_NOTICE          LOG_NOTICE              /**< Conditions that are not error conditions, but should possibly be handled specially.*/
+#define CISS_ENG_LEVEL_WARNING         LOG_WARNING             /**< Warning messages.*/
+#define CISS_ENG_LEVEL_ERR             LOG_ERR                 /**< Errors. */
+#define CISS_ENG_LEVEL_CRIT            LOG_CRIT                /**< Critical conditions, e.g., hard device errors. */
+#define CISS_ENG_LEVEL_ALERT           LOG_ALERT               /**< A condition that should be corrected immediately, such as a corrupted system database. */
+#define CISS_ENG_LEVEL_EMERG           LOG_EMERG               /**< A panic condition.  This is normally broadcast to all users. */
+#endif
+
+/*     Levels re used to configure syslogd at run time. Refer man syslog.conf  */
+#ifdef CISS_SYSLOG
+#define CISS_ENG_DEBUG(level, args...)          \
+       syslog(LOG_USER | level, "File: %s, Func: %s, Line#: %d", __FILE__, __func__, __LINE__);         \
+       syslog(LOG_USER | level, args);
+#elif CISS_DEBUG_MESSAGE
+#define CISS_ENG_DEBUG(level, args...)          \
+       debug_message(MID_CISS, level, "\n[Ciss-Engine]:[%s]:[%s] Line#%d:\n", __FILE__, __func__, __LINE__);     \
+       debug_message(MID_CISS, level, args);
+#else
+#define CISS_ENG_DEBUG(level, args...)         \
+       fprintf(stderr, "\nFile: %s, Func: %s, Line#: %d\n", __FILE__, __func__, __LINE__);      \
+       fprintf(stderr, args)
+#endif
+
+#if defined(CISS_DEBUG_MESSAGE)
+#define        CISS_ASSERT(condition)  \
+       if(!(condition))        \
+               debug_message(CISS_MODULE_ID, DEBUG_ASSERT, "");        \
+
+#else
+#define        CISS_ASSERT(condition)                  assert(condition)
+
+#endif
+
+#ifndef true
+#define true 1
+#endif
+
+#ifndef false
+#define false 0
+#endif
+
+
+/**
+ * This enumeration defines the error codes returned from engine to UI
+ */
+typedef enum {
+       CISS_ERR_NONE = 0x00,                                           /**< numberOfPW_AttemptsViolation*/
+
+       /*NETWORK ERRORS*/
+       CISS_ERR_UNKNOWN_SUBSCRIBER = 0x01,                             /**<  unknownSubscriber  "Invalid User Number" */
+       CISS_ERR_BEARER_NOT_PROVISIONED = 0x02,                         /**<  BearerServiceNotProvisioned "Request Rejected" */
+       CISS_ERR_TELESERVICE_NOT_PROVISIONED = 0x03,                    /**<  TeleServiceNotProvisioned */
+       CISS_ERR_CALL_BARRED = 0x04,                                    /**<  CallBarred */
+       CISS_ERR_ILLEGAL_SS_OPER = 0x05,                                /**<  illegalSS_Operation */
+       CISS_ERR_ERR_STATUS = 0x06,                                     /**<  ss_ErrorStatus */
+       CISS_ERR_NOT_AVAIL = 0x07,                                      /**<  ss_NotAvailable "Service not available" */
+       CISS_ERR_SUBSCRIPTION_VIOLATION = 0x08,                         /**<  ss_SubscriptionViolation */
+       CISS_ERR_INCOMPATIBILITY = 0x09,                                /**<  ss_Incompatibility */
+       CISS_ERR_FACILITY_NOT_SUPPORT = 0x0a,                           /**<  FacilityNotSupported */
+       CISS_ERR_SYS_FAILURE = 0x0b,                                    /**<  "SystemFailure "Please try again" */
+       CISS_ERR_DATA_MISSING = 0x0c,                                   /**<  DataMissing */
+       CISS_ERR_UNEXPECTED_DATA = 0x0d,                                /**<  UnexpectedDataValue 0x13 */
+       CISS_ERR_MPTY_PARTICIPANTS_EXCEED = 0x0e,                       /**< maxNumberOfMPTY_ParticipantsExceeded */
+       CISS_ERR_RESOURCE_NOT_AVAIL = 0x0f,                             /**<  ResourcesNotAvailable */
+       CISS_ERR_PW_REGIST_FAIL = 0x10,                                 /**< PasswordRegistrationFailure ( ex:password mismatch ) */
+       CISS_ERR_NEGATIVE_PW_CHECK = 0x11,                              /**<  NegativePasswordCheck */
+       CISS_ERR_PW_ATTEMPS_VIOLATION = 0x12,                           /**<  numberOfPW_AttemptsViolation*/
+
+       /*PHONE ERRORS*/
+       CISS_ERR_NETWORK_API_FAILED = 0x13,                             /**<  Telephony API call failed*/
+       CISS_ERR_DIVERT_TO_EMERGENCY_BLOCKED = 0x14,                    /**<  Call diverting to an emergency number not allowed*/
+
+       /* Call barring password mismatch errors */
+       CISS_ERR_CB_PWD_TOO_SORT = 0x15,                                /**< Password is too short - less than 4 characters*/
+       CISS_ERR_CB_PWD_MISMATCH = 0x16,                                /**< Password do not match - unequal password*/
+       CISS_ERR_CB_PWD_TOO_LONG = 0x17,                                /**< Password is too long - greater than 4 characters*/
+
+       CISS_ERR_UNKNOWN = 0xff,                                        /**<  unknown error*/
+
+} ciss_err_t;
+
+/**
+ * This enumeration defines the request types made to the engine
+ */
+typedef enum {
+   CISS_REQUEST_SET_INITIALIZE         = 0x100,                /**< Initialize*/
+   CISS_REQUEST_SS_SEND_STRING         = 0x101,                /**< parse MMI string into SS/USSD request*/
+   CISS_REQUEST_SS_SEND_DATA           = 0x102,                /**< Send SS data to network*/
+   CISS_REQUEST_SAT_SEND_SS            = 0x103,                /**< SS request by SAT*/
+   CISS_REQUEST_SAT_SEND_USSD          = 0x104,                /**< USSD request by SAT*/
+   CISS_REQUEST_SS_SEND_USSD_RESP      = 0x105                 /**< Send USSD response to network*/
+} ciss_request_type_t;
+
+/**
+ * This enumeration defines the results of call control
+ */
+typedef enum {
+       CISS_CALL_CONTROL_ALLOWED_NO_MOD        = 0x00, /**< call is allowed with no modification*/
+       CISS_CALL_CONTROL_NOT_ALLOWED           = 0x01, /**< call is not allowed*/
+       CISS_CALL_CONTROL_ALLOWED_WITH_MOD      = 0x02  /**< call is allowed with modification*/
+} ciss_call_control_result_t;
+
+/**
+ * This enumeration defines the response codes returned from engine to UI
+ */
+typedef enum {
+       CISS_UI_RESPONSE_NETWORK_RESPONSE               = 0x00, /**< response from network*/
+       CISS_UI_RESPONSE_USSD_NW_RESPONSE               = 0x01, /**<  ussd network response*/
+       CISS_UI_RESPONSE_CALL_CONTROL                   = 0x02, /**<  call control resposne*/
+       CISS_UI_RESPONSE_NETWORK_TIMEOUT                = 0x03, /**<  request timer expired*/
+       CISS_UI_RESPONSE_ERROR                          = 0x04, /**<  error from network*/
+       CISS_UI_RESPONSE_SAT_REQUEST_DONE               = 0x05, /**<  notify UI that engine has finished a SAT request*/
+       CISS_UI_RESPONSE_SAT_REQUEST_START              = 0x06, /**<  notify UI that engine has started a SAT request*/
+       CISS_UI_RESPONSE_CHECK_APPLET                   = 0x07  /**<  end app response */
+} ciss_ui_response_type_t;
+
+/**
+ * This enumeration defines the various SS services handled by the engine
+ */
+typedef enum {
+       CISS_SERVICE_DIVERTING = 0x00,                          /**<  Call diverting/forwarding*/
+       CISS_SERVICE_BARRING = 0x01,                            /**<  call barring*/
+       CISS_SERVICE_WAITING = 0x02,                            /**<  call waiting*/
+       CISS_SERVICE_CHANGE_BARRING_PASSWD = 0x03,              /**< change barring password*/
+       CISS_SERVICE_USSD = 0x04,                               /**< USSD*/
+       CISS_SERVICE_IDENTIFICATION = 0x05                      /**< clip, clir, colp, colr, cnap*/
+} ciss_service_t;
+
+/**
+ * This enumeration defines the telecomm services handled by the engine
+ */
+typedef enum
+{
+       CISS_TELECOMM_SVC_NONE,                         /**<0 : None */
+       CISS_TELECOMM_SVC_ALL_TELE_BEARER,              /**<1 : All Tele and Bearer services */
+
+       /* TELESERVICE */
+       CISS_TELECOMM_SVC_ALL_TELE,                     /**<2 : All Teleservices */
+       CISS_TELECOMM_SVC_VOICE,                        /**<3 : All Voice ( telephony ) */
+       CISS_TELECOMM_SVC_ALL_DATA_TELE,                /**<4 : All Data Teleservices */
+       CISS_TELECOMM_SVC_FAX,                          /**<5 : All Fax Service */
+       CISS_TELECOMM_SVC_SMS,                          /**<6 : SMS service      */
+       CISS_TELECOMM_SVC_VGCS,                         /**<7 : Voice Group Call Service */
+       CISS_TELECOMM_SVC_VBS,                          /**<8 : Voice Broadcast */
+       CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS,            /**<9 : All teleservice except SMS */
+
+       /* BEARER SERVICE */
+       CISS_TELECOMM_SVC_ALL_BEARER,                   /**<10 : all bearer services */
+       CISS_TELECOMM_SVC_ALL_ASYNC,                    /**<11 : All Async services */
+       CISS_TELECOMM_SVC_ALL_SYNC,                     /**<12 : All sync services*/
+       CISS_TELECOMM_SVC_ALL_CS_SYNC,                  /**<13 : All Circuit switched sync */
+       CISS_TELECOMM_SVC_ALL_CS_ASYNC,                 /**<14 : All Circuit switched async */
+       CISS_TELECOMM_SVC_ALL_DEDI_PS,                  /**<15 : All Dedicated packet Access */
+       CISS_TELECOMM_SVC_ALL_DEDI_PAD,                 /**<16 : All Dedicated PAD Access */
+       CISS_TELECOMM_SVC_ALL_DATA_CDA,                 /**<17 : All Data CDA*/
+
+       /* PLMN SPECIFIC TELESERVICE */
+       CISS_TELECOMM_SVC_PLMN_TELE_ALL,                /**<18 : PLMN specific teleservices*/
+       CISS_TELECOMM_SVC_PLMN_TELE_1,                  /**<19 : PLMN specific teleservice 1*/
+       CISS_TELECOMM_SVC_PLMN_TELE_2,                  /**<20 : PLMN specific teleservice 2*/
+       CISS_TELECOMM_SVC_PLMN_TELE_3,                  /**<21 : PLMN specific teleservice 3*/
+       CISS_TELECOMM_SVC_PLMN_TELE_4,                  /**<22 : PLMN specific teleservice 4*/
+       CISS_TELECOMM_SVC_PLMN_TELE_5,                  /**<23 : PLMN specific teleservice 5*/
+       CISS_TELECOMM_SVC_PLMN_TELE_6,                  /**<24 : PLMN specific teleservice 6*/
+       CISS_TELECOMM_SVC_PLMN_TELE_7,                  /**<25 : PLMN specific teleservice 7*/
+       CISS_TELECOMM_SVC_PLMN_TELE_8,                  /**<26 : PLMN specific teleservice 8*/
+       CISS_TELECOMM_SVC_PLMN_TELE_9,                  /**<27 : PLMN specific teleservice 9*/
+       CISS_TELECOMM_SVC_PLMN_TELE_A,                  /**<28 : PLMN specific teleservice 10*/
+       CISS_TELECOMM_SVC_PLMN_TELE_B,                  /**<29 : PLMN specific teleservice 11*/
+       CISS_TELECOMM_SVC_PLMN_TELE_C,                  /**<30 : PLMN specific teleservice 12*/
+       CISS_TELECOMM_SVC_PLMN_TELE_D,                  /**<31 : PLMN specific teleservice 13*/
+       CISS_TELECOMM_SVC_PLMN_TELE_E,                  /**<32 : PLMN specific teleservice 14*/
+       CISS_TELECOMM_SVC_PLMN_TELE_F,                  /**<33 : PLMN specific teleservice 15*/
+
+       /* PLMN SPECIFIC BEARER SERVICE */
+       CISS_TELECOMM_SVC_PLMN_BEAR_ALL,                /**<34 : All PLMN specific bearer services*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_1,                  /**<35 : PLMN specific bearer service 1*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_2,                  /**<36 : PLMN specific bearer service  2*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_3,                  /**<37 : PLMN specific bearer service  3*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_4,                  /**<38 : PLMN specific bearer service  4*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_5,                  /**<39 : PLMN specific bearer service  5*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_6,                  /**<40 : PLMN specific bearer service  6*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_7,                  /**<41 : PLMN specific bearer service  7*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_8,                  /**<42 : PLMN specific bearer service  8*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_9,                  /**<43 : PLMN specific bearer service  9*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_A,                  /**<44 : PLMN specific bearer service  10*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_B,                  /**<45 : PLMN specific bearer service  11*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_C,                  /**<46 : PLMN specific bearer service  12*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_D,                  /**<47 : PLMN specific bearer service  13*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_E,                  /**<48 : PLMN specific bearer service  14*/
+       CISS_TELECOMM_SVC_PLMN_BEAR_F,                  /**<49 : PLMN specific bearer service  15*/
+
+       /* CPHS - AUXILIARY SERVICE */
+       CISS_TELECOMM_SVC_AUX_VOICE,                    /**<50 : All Auxiliary Voice ( Auxiliary telephony ) */
+
+       CISS_TELECOMM_SVC_ALL_GPRS_BEARER,              /**<51 : All GPRS bearer services */
+       CISS_TELECOMM_SVC_MAX                           /**<52 : Max count */
+} ciss_telecomm_svc_t;
+
+/**
+ * This enumeration defines the various flavors of SS handled by the engine
+ */
+typedef enum {
+/* Divert Flavor */
+       CISS_FLAVOR_NONE = 0x00,                                                /**<  None*/
+       CISS_FLAVOR_DIVERT_START = 0x01,                                        /**<  Divert start*/
+       CISS_FLAVOR_DIVERT_UNCONDITIONAL = 0x02,                                /**<  Divert unconditional*/
+       CISS_FLAVOR_DIVERT_BUSY = 0x03,                                         /**<  Divert if busy*/
+       CISS_FLAVOR_DIVERT_NOREPLY = 0x04,                                      /**<  Divert if no reply*/
+       CISS_FLAVOR_DIVERT_UNREACHABLE = 0x05,                                  /**<  Divert if unreachable*/
+       CISS_FLAVOR_DIVERT_CANCELALL = 0x06,                                    /**<  Cancel all diverting*/
+       CISS_FLAVOR_BARRING_CANCELALL = 0x07,                                   /**<  Cancel all barring*/
+
+       CISS_FLAVOR_DIVERT_ALL_FLAVORS = 0x08,                                  /**<  Deregistration( NETWORK_DIVERT_UNIVERSAL) */
+       CISS_FLAVOR_DIVERT_ALL_CONDITIONAL_FLAVORS = 0x09,                      /**<  Divert all conditional */
+
+/* Barring Flavor */
+       CISS_FLAVOR_BARRING_START = 0x10,                                       /**<  Barring start*/
+       CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS = 0x11,                          /**<  bar all outgoing calls*/
+       CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL = 0x12,                  /**<  bar all outgoing international calls*/
+       CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME = 0x13,    /**<  bar all outgoing international calls except those to home country*/
+
+       CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS = 0x14,                          /**<  bar all incoming calls*/
+       CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING = 0x15,                 /**<  bar all incoming calls when roaming*/
+       CISS_FLAVOR_BARRING_ALL_FLAVORS = 0x16,                                 /**< includes all other flavors.  Used for Cancel All */
+       CISS_FLAVOR_BARRING_OUTGOING = 0x17,                                    /**<  bar all outgoing flavors*/
+       CISS_FLAVOR_BARRING_INCOMING = 0x18,                                    /**<  bar all incoming flavors*/
+       CISS_FLAVOR_BARRING_END = 0x19,                                         /**<  Barring end*/
+
+       CISS_FLAVOR_WAITING = 0x20,                                             /**<  added for auto-check feature enable/disable*/
+       CISS_FLAVOR_MAX                                                         /**<  max*/
+
+} ciss_flavor_t;
+
+/**
+ * This enumeration defines the various actions on a SS service
+ */
+typedef enum {
+       CISS_ACTION_NONE = -1,                          /**<  None*/
+       CISS_ACTION_CHECK_STATUS = 0x00,                /**<  check status*/
+       CISS_ACTION_ACTIVATE = 0x01,                    /**<  activate*/
+       CISS_ACTION_DEACTIVATE = 0x02,                  /**<  deactivate*/
+       CISS_ACTION_MAX_NUM = 0xff                      /**<  max*/
+} ciss_action_type_t;
+
+/**
+ * This enumeration defines whther the SS operation was a success or failure
+ */
+typedef enum {
+       CISS_RESP_SUCCESS = 0x00,               /**< Success*/
+       CISS_RESP_FAIL = 0x01                   /**< Failure*/
+} ciss_response_status_t;
+
+/**
+ * This enumeration defines the status of the SS
+ */
+typedef enum {
+       CISS_STATUS_ACTIVE = 0x00,                      /**<  Active*/
+       CISS_STATUS_REGISTERED = 0x01,                  /**<  Registered*/
+       CISS_STATUS_PROVISIONED = 0x02,                 /**<  Provisioned*/
+       CISS_STATUS_QUIESCENT = 0x03,                   /**<  Quiescent*/
+       CISS_STATUS_NOTHING = 0x04                      /**<  Nothing*/
+} ciss_status_t;
+
+/**
+ * This enumeration defines the subscription type used by the engine to subscribe to notis
+ */
+typedef enum {
+       CISS_SUBSCRIPTION_TYPE_CALL_SETTINGS = 0x00,    /**<  Call settings.. minimal subscription*/
+       CISS_SUBSCRIPTION_TYPE_MMI = 0x01,              /**<  For MMI string.. all events subscribed*/
+       CISS_SUBSCRIPTION_TYPE_APP = 0x02               /**<  CIss app.. all events subscribed*/
+} ciss_subscription_type_t;
+
+/**
+ * This enumeration defines the ussd indication type
+ */
+typedef enum {
+       CISS_USSD_NOTIFY = 0x00,                        /**<  notify : to display ussd data to user. */
+       CISS_USSD_IND_NO_ACTION_REQUIRE = 0x01,         /**<no further user action required */
+       CISS_USSD_IND_ACTION_REQUIRE = 0x02,            /**<further user action required*/
+       CISS_USSD_TERMINATED_BY_NET = 0x03,             /**< USSD terminated by network */
+       CISS_USSD_OTHER_CLIENT = 0x04,                  /**< other local client has responded */
+       CISS_USSD_NOT_SUPPORT = 0x05,                   /**< operation not supported */
+       CISS_USSD_TIME_OUT = 0x06                       /**<network time out */
+} ciss_ussd_ind_type_t;
+
+/**
+ * This enumeration defines the ussd response type
+ */
+typedef enum {
+       CISS_USSD_RES_UNKNOWN_ALPHABET = 0x00,          /**< unlnown alphabet */
+       CISS_USSD_RES_DISPL_BUSY = 0x01,                /**< display is busy  */
+       CISS_USSD_RES_OK = 0x02,                        /**< response */
+       CISS_USSD_RES_NONE = 0x03                       /**< no response  use for user release*/
+} ciss_ussd_response_type_t;
+
+/**
+* These are the four types of identity presentation / restriction services.
+*/
+typedef enum {
+       CISS_CC_VOICE_IDENTIFICATION_NONE = 0x00,               /**< none */
+       CISS_CALLING_LINE_IDENTITY_PRESENTATION = 0x01,         /**< identify the party calling this phone */
+       CISS_CALLING_LINE_IDENTITY_RESTRICTION = 0x02,          /**< hide the identity of this phone when calling others */
+       CISS_CONNECTED_LINE_IDENTITY_PRESENTATION = 0x03,       /**< identify the party to whom the calling party (this phone) is connected */
+       CISS_CONNECTED_LINE_IDENTITY_RESTRICTION = 0x04,        /**< restrict yourself from being identified by incoming calls, such as forwarded calls */
+       CISS_CALLED_LINE_IDENTITY_PRESENTATION = 0x05,          /**< same as colr */
+       CISS_CALLING_NAME_PRESENTATION = 0x06                   /**< show the name of the calling party to the connected one */
+} ciss_cc_voice_identification_type_t;
+
+#if 0
+typedef struct {
+       int             request_by;
+       int             last_ind_type;
+       int             sat_command_id;
+} ciss_ussd_engine_info_t;
+#endif
+
+/**
+* The ussd data recieved from the network
+*/
+typedef struct {
+       ciss_ussd_ind_type_t            ind_type;                               /**< the ussd indication type */
+       unsigned char                   dcs;                                    /**< the data coding scheme */
+       int                             ussd_string_length;                     /**< Length of String */
+       char                            ussd_string[CISS_USSD_DATA_SIZE_MAX];   /**< The USSD data string to be displayed to the user */
+       int                             request_by;                             /**< The Engine information */
+       int                             sat_command_id;                         /**< The Engine information */
+} ciss_ussd_record_t;
+
+/**
+* The ussd repsonse data sent to the network
+*/
+typedef struct {
+       ciss_ussd_response_type_t       resp_type;                              /**< the ussd repsonse type */
+       int                             length;                                 /**< Length of String */
+       char                            string[CISS_USSD_DATA_SIZE_MAX];        /**< The USSD data string to be sent to network */
+       int                             request_by;                             /**< The Engine information */
+       int                             sat_command_id;                         /**< The Engine information */
+       int                             last_ussd_ind;                          /**< The Engine information */
+} ciss_ussd_response_record_t;
+
+/**
+* ss request data to be sent to network.
+*/
+typedef struct {
+       ciss_service_t                  service;                                        /**< barring, forwarding, waiting, etc */
+       ciss_telecomm_svc_t             telecommSvc;                                    /**< telecomm service */
+       ciss_flavor_t                   flavor;                                         /**< the flavor of the SS used in service*/
+       ciss_action_type_t              action;                                         /**< the action to be performed on the SS */
+       int                             nDivertWaitingTime;                             /**< the no reply timer */
+       char                            szDivertNumber[CISS_NUMBER_LEN_MAX + 1];                /**< number to be diverted to */
+       char                            szBarringPasswd[CISS_MAX_PASSWORD_LEN + 1];     /**< the old barring pwd */
+       char                            szBarringNewPasswd[CISS_MAX_PASSWORD_LEN + 1];  /**< the new barring pwd */
+       char                            szBarringCnfPasswd[CISS_MAX_PASSWORD_LEN + 1];  /**< the cnf barring pwd */
+} ciss_req_data_t;
+
+/**
+* SS Result String type
+*/
+typedef struct {
+       int                                     nRecordNum;                                                     /**< number of SS records received */
+       ciss_service_t                          szSsType;                                                       /**< barring, forwarding, waiting, etc  */
+       ciss_flavor_t                           szFlavor;                                                       /**< the flavor of the SS used in service */
+       ciss_cc_voice_identification_type_t     cli_type;                                                       /**< the cli type if service is identification */
+       ciss_telecomm_svc_t                     szBearer[CISS_MAX_SS_RECORDS];                                  /**< telecomm service */
+       ciss_status_t                           szResult[CISS_MAX_SS_RECORDS];                                  /**< status of the SS */
+       int                                     nDivertWaitingTime[CISS_MAX_SS_RECORDS];                        /**< the no reply timer */
+       char                                    szDivertNumber[CISS_MAX_SS_RECORDS][CISS_NUMBER_LEN_MAX + 1];   /**< number to be diverted to  */
+} ciss_result_t;
+
+/**
+* The call control result from SAT to UI
+*/
+typedef struct {
+       char                            cc_data[CISS_TEXT_LEN_MAX+1];
+       ciss_call_control_result_t      cc_result;
+} ciss_call_control_info_t;
+
+typedef enum {
+       CISS_ENGINE_INIT_BY_SETTINGS = 0x00,    /**<  Call settings.. minimal subscription*/
+       CISS_ENGINE_INIT_BY_MMI = 0x01,         /**<  For MMI string.. all events subscribed*/
+       CISS_ENGINE_INIT_BY_APP = 0x02,         /**<  CIss app.. all events subscribed*/
+       CISS_ENGINE_NOT_INIT = 0x03
+} ciss_engine_init_type;
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _CISS_EH_H_ */
+
diff --git a/include/ciss-ussd.h b/include/ciss-ussd.h
new file mode 100755 (executable)
index 0000000..1a7eca4
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#ifndef _CISS_MMI_USSD_H_
+#define _CISS_MMI_USSD_H_
+
+#include <Elementary.h>
+#include <ITapiSs.h>
+
+Evas_Object *_ciss_create_ussd_view(Evas_Object *parent, TelSsUssdMsgIndInfo_t *ussd_info, void *data);
+void _ciss_ussd_quit_cb(void *data, Evas_Object *obj, void *event_info);
+#endif
+
diff --git a/include/ciss-util.h b/include/ciss-util.h
new file mode 100755 (executable)
index 0000000..08f11fd
--- /dev/null
@@ -0,0 +1,42 @@
+/*\r
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved \r
+ *\r
+ * This file is part of <ciss>\r
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall use it only in accordance\r
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability of the software,\r
+ * either express or implied, including but not limited to the implied warranties of merchantability,\r
+ * fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,\r
+ * modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+#ifndef _CISS_UTIL_H_\r
+#define _CISS_UTIL_H_\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+\r
+/*\r
+ * Functions of safe copy of string by checking the destination buffer size\r
+ */\r
+char *_ciss_strcpy(char *pBuffer, int nBufCount, const char *pszString);\r
+\r
+/*\r
+ * Functions for swapping the strings\r
+ */\r
+void _ciss_util_swap(char *str1, char *str2);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+\r
+#endif /* _CISS_UTIL_H_ */\r
+\r
diff --git a/include/ciss-widget.h b/include/ciss-widget.h
new file mode 100755 (executable)
index 0000000..af1d81a
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#ifndef _CISS_MMI_VIEW_UTILS_H_
+#define _CISS_MMI_VIEW_UTILS_H_
+
+#include <Elementary.h>
+#include <vconf.h>
+#include "ciss-types.h"
+
+#define SK_PORTRAIT_W  (480)
+#define SK_PORTRAIT_H  (78)
+#define SK_PORTRAIT_X  (0)
+#define SK_PORTRAIT_Y  (722)
+
+#define TB_PORTRAIT_W  (480)
+#define TB_PORTRAIT_H  (100)
+#define TB_PORTRAIT_X  (0)
+#define TB_PORTRAIT_Y  (0)
+
+typedef enum {
+       OK_ONLY_RIGHT,
+       BACK_ONLY,
+       CANCEL_REPLY,
+       BACK_REPLY,
+       BACK_MORE,
+       HIDE_BACK
+} ciss_softkey_t;
+
+enum {
+       CISS_ICON_TYPE_NONE,
+       CISS_ICON_TYPE_ADD,
+       CISS_ICON_TYPE_EDIT,
+       CISS_ICON_TYPE_DONE,
+       CISS_ICON_TYPE_CANCEL,
+       CISS_ICON_TYPE_OTHERS,
+};
+
+Evas_Object *_ciss_create_noti_popup(Evas_Object *parent,
+                       char *strtitle, char *strmsg, double t_timeout,void *data);
+Evas_Object *_ciss_create_error_popup(Evas_Object *parent,
+                       ciss_err_t ciss_error, double t_timeout,void *data);
+Evas_Object *_ciss_create_popup(Evas_Object *parent, char *msg);
+Evas_Object *_ciss_create_win(const char *name);
+Evas_Object *_ciss_create_layout_main( Evas_Object* parent);
+Evas_Object *_ciss_create_bg(Evas_Object *parent);
+Evas_Object *_ciss_create_navi_control_bar(Evas_Object *parent,
+                       char *label1, Evas_Smart_Cb cb1,
+                       char *label2, Evas_Smart_Cb cb2,
+                       void *data, Elm_Object_Item *navi_it,
+                       Elm_Object_Item ** c_item);
+Evas_Object *_cst_create_title_btn(Evas_Object *parent,
+               const char *text, Evas_Smart_Cb func, void *data);
+void _ciss_remove_naviframe(Evas_Object *nf);
+
+/*Callback Functions */
+Eina_Bool _ciss_on_end_key_down(void *data, int type, void *event);
+Evas_Object * _ciss_create_result_genlist(const char *result_str, int str_len, Evas_Object *nf, void *data);
+void _ciss_geinlist_item_class_new(void *data);
+void _ciss_geinlist_item_class_free(void *data);
+
+#endif
+
diff --git a/org.tizen.ciss.desktop.in b/org.tizen.ciss.desktop.in
new file mode 100755 (executable)
index 0000000..5371be8
--- /dev/null
@@ -0,0 +1,12 @@
+Name=ciss
+Type=Application
+Exec=${PREFIX}/bin/ciss
+Icon=
+Network={True/False}
+Comment=
+MimeType=
+X-Tizen-TaskManage=False
+X-Tizen-Multiple=False
+X-Tizen-Removable=False
+Version=0.4.6
+NoDisplay=True
diff --git a/packaging/org.tizen.ciss.spec b/packaging/org.tizen.ciss.spec
new file mode 100755 (executable)
index 0000000..77c6c29
--- /dev/null
@@ -0,0 +1,50 @@
+Name:       org.tizen.ciss
+Summary:    CISS-MMI application
+Version:    0.4.45
+Release:    1
+Group:      devel
+License:    Samsung Proprietary License
+Source0:    %{name}-%{version}.tar.gz
+BuildRequires:  pkgconfig(appcore-efl)
+BuildRequires:  pkgconfig(elementary)
+BuildRequires:  pkgconfig(UI-idlecapture)
+BuildRequires:  pkgconfig(tapi)
+BuildRequires:  pkgconfig(utilX)
+BuildRequires:  pkgconfig(bundle)
+BuildRequires:  pkgconfig(aul)
+BuildRequires:  pkgconfig(dlog)
+
+BuildRequires:  cmake
+BuildRequires:  gettext-tools
+BuildRequires:  edje-tools
+
+%description
+CISS-MMI application.
+
+%prep
+%setup -q
+
+%build
+
+%define PREFIX    "/opt/apps/org.tizen.ciss"
+%define RESDIR    "/opt/apps/org.tizen.ciss/res"
+%define DATADIR    "/opt/apps/org.tizen.ciss/data"
+
+cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX}
+make %{?jobs:-j%jobs}
+
+%install
+%make_install
+
+%find_lang org.tizen.ciss
+
+%post
+chown -R 5000:5000 /opt/apps/org.tizen.ciss/data
+
+%files -f org.tizen.ciss.lang
+/opt/apps/org.tizen.ciss/bin/*
+#/opt/apps/org.tizen.ciss/res/images/*
+/opt/apps/org.tizen.ciss/res/edje/ciss-mmi.edj
+/opt/apps/org.tizen.ciss/data
+/opt/share/applications/*
+
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..855bc7a
--- /dev/null
@@ -0,0 +1,24 @@
+# for i18n
+
+SET(POFILES de_DE.po el_GR.po en.po es_ES.po fr_FR.po it_IT.po ja_JP.po ko_KR.po nl_NL.po pt_PT.po ru_RU.po tr_TR.po zh_CN.po zh_HK.po zh_TW.po)
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+       SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+       MESSAGE("PO: ${pofile}")
+       GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+       GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+       SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+       ADD_CUSTOM_COMMAND(
+                       OUTPUT ${moFile}
+                       COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+                       DEPENDS ${absPofile}
+       )
+       INSTALL(FILES ${moFile}
+               DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+       SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100755 (executable)
index 0000000..8ef333c
--- /dev/null
@@ -0,0 +1,30 @@
+# List of source files containing translatable strings.
+ciss-0.c
+answeringmode.c
+autoreject.c
+main.c
+common_callback.c
+cissUG-efl.c
+autoreject_del.c
+calldiverting-dialog.c
+allcalls.c
+callbarring.c
+videocall.c
+ciss_tel_request.c
+ciss_helptext.c
+prefixdialing_delete.c
+callstatustone.c
+ciss_common_draw_widget.c
+ime-view.c
+stack.c
+rejectcall_message.c
+rejectcall_message_del.c
+voicecall.c
+view.c
+answeringmode_automatic.c
+callbarring-dialog.c
+db.c
+alloutgoingcalls.c
+showmynumber.c
+calldiverting.c
+prefixdialing.c
diff --git a/po/de_DE.po b/po/de_DE.po
new file mode 100755 (executable)
index 0000000..52f341c
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "Alle eingehenden Anrufe gesperrt"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "Alle ausgehenden Anrufe gesperrt"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "Umleitung aktiv: Immer"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "Umleitung aktiv: Immer"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "Umleitung aktiv: Nicht erreichbar"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "Umleitung aktiv: Bei besetzt"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "Eingehende Anrufe bei Roaming gesperrt"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "Ausgehende internationale Anrufe außer Daheim gesperrt"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "Ausgehende internationale Anrufe gesperrt"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "für alle Teledienste außer SMS"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "Alle Anrufe"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "Anrufsperre"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "Anrufumleitung"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "Anklopfen"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "Nummer eingeben"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "Bedingt"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "Asynchrone Daten hinzufügen"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "Alle Übertragungsdienste"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "Alle Datendienste"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "Alle PADCA-Dienste"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "Alle PDS-Dienste"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "Alle PLMN-Übertragungstypen"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "Alle Dienste"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "Alle synchronen Dienste"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "Alle Telekom-Dienste"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "Antwortnummer wird bei Anruf nicht angezeigt"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "Antwortnummer wird bei Anruf angezeigt"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "Asynchrone Datendienste"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "Anrufer-ID verfügbar"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "Anrufer-ID verborgen"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "Anruferkennung beschränkt"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "Anruferkennung wird angezeigt"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Eigene Rufnummer wird nicht gesendet, wenn Anrufe beantwortet werden."
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "Eigene Rufnummer wird nicht gesendet, wenn angerufen wird."
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Meine Anrufer-ID wird beim Annehmen von Anrufen gesendet"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "Meine Anrufer-ID wird beim Anrufen gesendet"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "Passwort gesperrt"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "Vom Netz abgewiesen"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "Anforderung läuft..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "Dienst nicht autorisiert"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "Alle sperren"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "Sperre eingehende Anr."
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "Sperre ausgehende Anr."
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "Service nicht verfügbar"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "Ungültiges Kennwort"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "Passwort ändern"
+
diff --git a/po/el_GR.po b/po/el_GR.po
new file mode 100755 (executable)
index 0000000..d9bba0d
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "Φραγή όλων των εισερχόμενων κλήσεων"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "Φραγή όλων των εξερχόμενων κλήσεων"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "Ενεργή Προώθηση Κλήσεων: Πάντα"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "Προώθηση κλήσεων ενεργή: Εάν δεν απαντά"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "Προώθηση κλήσεων ενεργή: Aδύνατη πρόσβαση"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "Προώθηση κλήσεων ενεργή: Σε κατειλημμένη γραμμή"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "Φραγή εισερχομένων σε περιαγωγή"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "Φραγή εξερχομένων διεθνών εκτός χώρας επιλογής"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "Φραγή όλων των\nεξερχόμενων διεθνών κλήσεων"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "για όλες τις Τηλε-υπηρεσίες εκτός των SMS"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "Όλες οι κλήσεις"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "Φραγή κλήσεων"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "Εκτροπή κλήσεων"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "Αναμονή κλήσεων"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "Εισαγωγή αριθμού"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "Φαξ"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "Υπό όρους"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "Όλα τα μη συγχρονισμένα δεδομένα"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "Όλες οι υπηρεσίες φορέα"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "Όλες οι υπηρεσίες δεδομένων"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "Όλες οι υπηρεσίες PADCA"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "Όλες οι υπηρεσίες PDS"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "Όλοι οι φορείς PLMN"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "Όλες οι υπηρεσίες"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "Όλες οι συγχρονισμένες υπηρεσίες"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "Όλες οι υπηρεσίες τηλεπικ/νίας"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "Ο αριθμός απάντησης δεν εμφανίζεται κατά την κλήση"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "Ο αριθμός απάντησης εμφανίζεται κατά την κλήση"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "Υπηρεσίες μη συγχρονισμένων δεδομένων"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "Διαθέσιμη ταυτότητα καλούντος"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "Απόκρυψη ταυτότητας καλούντος"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "Περιορισμένη ταυτότητα καλούντος"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "Εμφάνιση ταυτότητας καλούντος"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Το δικό μου αναγνωριστικό καλούντος δεν αποστέλλεται όταν απαντώ σε μια κλήση"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "Το δικό μου αναγνωριστικό καλούντος δεν αποστέλλεται όταν πραγματοποιώ κλήση"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Το δικό μου αναγνωριστικό καλούντα αποστέλλεται όταν απαντώ σε μια κλήση"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "Το δικό μου αναγνωριστικό καλούντα αποστέλλεται όταν πραγματοποιώ κλήση"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "Ο κωδικός πρόσβασης μπλόκαρε"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "Απορρίφθηκε από το δίκτυο"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "Αίτηση..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "Υπηρεσία δεν επιτρέπεται"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "Φραγή όλων"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "Φραγή εισερχόμενων"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "Φραγή εξερχόμενων"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "Μη διαθέσιμη λειτουργία"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "Μη έγκυρος κωδικός"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "Aλλαγή κωδικού"
+
diff --git a/po/en.po b/po/en.po
new file mode 100755 (executable)
index 0000000..60a72c6
--- /dev/null
+++ b/po/en.po
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "All incoming calls barred"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "All outgoing calls barred"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "Divert calls: Always"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "Divert calls: No answer"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "Divert calls: Unreachable"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "Divert calls: When busy"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "Incoming calls barred when roaming"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "Outgoing international calls except home barred"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "Outgoing international calls barred"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "for All Tele services except SMS"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "All calls"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "Call barring"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "Call diverting"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "Call waiting"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "Enter number"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "Conditional"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "All asynchronous data"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "All bearer services"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "All data services"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "All PADCA services"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "All PDS services"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "All PLMN bearers"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "All services"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "All synchronous services"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "All telecom services"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "Answering number is not displayed when calling"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "Answering number is displayed when calling"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "Asynchronous data services"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "Caller ID available"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "Caller ID hidden"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "Caller ID restricted"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "Caller ID shown"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "My caller ID is not sent when answering calls"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "My caller ID is not sent when calling"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "My caller ID will be sent when answering calls"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "My caller ID will be sent when calling"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "Password blocked"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "Rejected by network"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "Requesting..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "Service not authorised"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "All barring"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "Incoming barring"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "Outgoing barring"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "Service not available"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "Invalid password"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "Change password"
+
diff --git a/po/es_ES.po b/po/es_ES.po
new file mode 100755 (executable)
index 0000000..b77af6b
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "Restringidas todas las llamadas entrantes"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "Restringidas todas las llamadas salientes"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "Desvío de llamadas: Siempre"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "Desvío de llamadas: Sin respuesta"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "Desvío de llamada: Si no localizable"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "Desvío de llamada: Si ocupado"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "Llamadas entrantes restringidas en el extranjero"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "Llamadas internacionales salientes excepto país de origen restringidas"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "Llamadas salientes internacionales restringidas"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "para todos los servicios teleservicios excepto SMS"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "Todas las llamadas"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "Restricción de llamadas"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "Desvío de llamadas"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "Llamada en espera"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "Introducir número"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "Condicional"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "Todos los datos asíncronos"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "Todos los servicios de portador"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "Todos los servicios de datos"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "Todos los servicios PADCA"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "Todos los servicios PDS"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "Todos los portadores de PLMN"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "Todos los servicios"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "Todos los servicios síncronos"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "Todos los servicios de telecomunicaciones"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "El número de respuesta no aparece cuando llama"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "El número de respuesta aparece cuando llama"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "Servicios de datos asíncronos"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "ID de llamante disponible"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "ID de llamante oculta"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "ID de llamante restringido"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "ID de llamante visible"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Mi ID de llamante no se envía al responder a las llamadas"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "Mi ID de llamante no se envía al llamar"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Mi ID de llamante se enviará al responder llamadas"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "Mi ID de llamante se enviará al llamar"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "Contraseña bloqueada"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "Rechazado por la red"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "Solicitando..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "Servicio no autorizado"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "Todas las llamadas restringidas"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "Restricción de entrantes"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "Restricción de salientes"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "Servicio no disponible"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "Contraseña incorrecta"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "Cambiar contraseña"
+
diff --git a/po/fr_FR.po b/po/fr_FR.po
new file mode 100755 (executable)
index 0000000..4a9387a
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "Tous appels entrants interdits"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "Tous appels sortants interdits"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "Renvoi d'appel activé : Toujours"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "Renvoi d'appel activé : Aucune réponse"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "Renvoi d'appel activé : Injoignable"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "Renvoi d'appel activé : Occupé"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "Appels entrants interdits en itinérance"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "Appels internationaux sortants interdits sauf vers pays d'origine"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "Appels internationaux sortants interdits"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "Pour tous les téléservices, sauf SMS"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "Tous les appels"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "Restriction d'appel"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "Renvoi d'appel"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "Signal d'appel"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "Entrez le numéro"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "Conditionnel"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "Toutes les données asynchrones"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "Tous serv. support"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "Tous les services de données"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "Tous les services PADCA"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "Tous les services PDS"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "Tous les supports PLMN"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "Tous les services"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "Tous les services synchrones"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "Tous serv. télécom."
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "Le numéro du transfert d'appel n'apparaît pas pendant l'appel"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "Le numéro du transfert d'appel apparaît pendant l'appel"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "Services de données asynchrones"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "ID appelant disponible"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "N° appelant masqué"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "N° appelant restreint"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "N° appelant affiché"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Mon ID appelant n'est pas envoyé en cas d'appel répondu"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "Mon ID appelant n'est pas envoyé en cas d'appel passé"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Mon ID appelant est envoyé lors de la réponse à un appel"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "Mon ID appelant est envoyé lors d'un appel émis"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "Mot de passe bloqué"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "Rejeté par le réseau"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "Demande en cours..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "Service non autorisé"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "Toutes les interdictions d'appel"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "Interdire appels entrants"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "Interdire appels sortants"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "Service non disponible"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "Mot de passe incorrect"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "Modifier mot de passe"
+
diff --git a/po/it_IT.po b/po/it_IT.po
new file mode 100755 (executable)
index 0000000..5ea6ff3
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "Blocco di tutte le chiamate entranti"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "Blocco di tutte le chiamate uscenti"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "Trasferimento chiamate attivo: sempre"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "Trasferimento chiamate attivo: nessuna risposta"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "Trasferimento chiamate attivo: non raggiungibile"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "Trasferimento chiamate attivo: occupato"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "Chiamate in arrivo bloccate durante roaming"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "Chiamate internazionali in uscita bloccate tranne verso proprio paese"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "Uscenti internazionali bloccate"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "per tutti i servizi telefonici eccetto SMS"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "Tutte le chiamate"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "Blocco chiamate"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "Trasferimento chiamate"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "Avviso di chiamata"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "Inserisci numero"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "Condizionale"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "Tutti i dati asincroni"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "Tutti i servizi di rete"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "Tutti i servizi dati"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "Tutti i servizi PADCA"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "Tutti i servizi PDS"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "Tutte le reti PLMN"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "Tutti i servizi"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "Tutti i servizi sincroni"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "Tutti i servizi telecomunic."
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "Il numero del telefono ricevente non compare quando si effettua una chiamata"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "Il numero del telefono ricevente compare quando si effettua una chiamata"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "Servizi dati asincroni"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "ID chiamante disponibile"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "ID chiamante nascosto"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "Numero nascosto"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "Numero visualizzato"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "L'ID chiamante personale non viene inviato quando si risponde alle chiamate"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "L'ID chiamante personale non viene inviato quando si effettuano chiamate"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "L'ID chiamante personale viene inviato quando si risponde alle chiamate"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "L'ID chiamante personale viene inviato quando si effettuano chiamate"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "Password bloccata"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "Rifiutato dalla rete"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "Richiesta in corso"
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "Servizio non autorizzato"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "Tutte bloccate"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "Blocco chiamate in arrivo"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "Blocco chiamate in uscita"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "Servizio non disponibile"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "Password non valida"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "Cambia password"
+
diff --git a/po/ja_JP.po b/po/ja_JP.po
new file mode 100755 (executable)
index 0000000..99b825c
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "全ての​着信​が​規制​されて​います"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "全ての​発信​が​規制​されて​います"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "通話​を​転送する:常時"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "通話​を転送​する:​応答​なし"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "通話​を​転送:​​圏外時"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "通話​を​転送:​ビジー時"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "ローミング​中​は​着信​が​規制​されます"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "自国​以外の​全ての​国際​電話​発信​が​規制​されています"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "全ての​国際電話発信​が​規制​されて​います"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "SMS​以外の​全ての​テレサービス用"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "全通話"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "発着信規制"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "転送でんわ"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "キャッチホン"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "直接入力"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "FAX"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "条件付き"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "全ての​非同期​データ"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "全ての​ベアラ​サービス"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "全ての​データ​サービス"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "全ての​PADCA​サービス"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "全ての​PDS​サービス"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "全ての​PLMN​ベアラ"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "全ての​サービス"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "全ての​同期​サービス"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "全ての​通信​サービス"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "通話時に​電話​番号​​非表示​"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "通話時に​電話​番号​​表示​"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "非同期​データ​サービス"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "着信​画像​を​利用​できます"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "着信時に​発信者​番号​を​表示​しません"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "発信者番号​制限​あり"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "着信時に​発信者番号​を​表示​"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "応答時に​発信者​ID​を​送信​しません"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "発信時に​発信者​番号​を​通知​しません"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "応答時に​発信者​IDを​送信​します"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "通話時に​発信者ID​を​送信​します"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "パスワード​が​ブロック​され​ました"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "ネットワーク​に​拒否​されました"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "要求中..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "サービス​は​未認証​です"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "全ての​発着信​規制"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "受信​規制​です"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "発信​規制​です"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "サービス​を​利用​できません"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "パスワード​が​無効​です"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "暗証番号​変更"
+
diff --git a/po/ko_KR.po b/po/ko_KR.po
new file mode 100755 (executable)
index 0000000..dd3cfd7
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "모든 수신 전화가 제한되었습니다"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "모든 발신 전화가 제한되었습니다"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "착신통화 : 항상"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "착신통화 : 응답 없을 때"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "착신통화 : 서비스 지역 이탈 시"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "통화 중일 때"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "로밍 중에는 전화 수신이 제한됩니다"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "자국으로 거는 전화를 제외한 모든 국제전화 발신이 제한되었습니다"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "국제전화 발신이 제한되었습니다"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "SMS를 제외한 모든 통신 서비스"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "모든 전화"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "통화제한"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "착신전환"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "통화대기"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "전화번호를 입력하세요"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "팩스"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "조건부"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "모든 비동기 데이터"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "모든 베어러 서비스"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "모든 데이터 서비스"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "모든 PADCA 서비스"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "모든 PDS 서비스"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "모든 PLMN"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "모든 서비스"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "모든 동기 서비스"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "모든 사업자 서비스"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "전화를 걸 때 상대방 전화번호가 표시되지 않습니다"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "전화를 걸 때 상대방 전화번호가 표시됩니다"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "비동기 데이터 서비스"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "발신자 번호가 표시됩니다"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "발신자 번호가 표시되지 않습니다"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "발신자 번호 표시 제한"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "발신자 번호가 표시됩니다"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "전화를 받을 때 내 전화번호를 전송하지 않습니다"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "전화를 걸 때 내 전화번호를 전송하지 않습니다"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "전화를 받을 때 내 발신자 정보를 전송합니다"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "전화를 걸 때 내 발신자 정보를 전송합니다"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "비밀번호가 잠금 설정되었습니다"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "네트워크에서 거부되었습니다"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "요청 중..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "서비스가 인증되지 않았습니다"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "모두 제한되었습니다"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "수신 제한"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "발신제한"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "서비스를 사용할 수 없습니다"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "비밀번호가 바르지 않습니다"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "비밀번호 변경"
+
diff --git a/po/nl_NL.po b/po/nl_NL.po
new file mode 100755 (executable)
index 0000000..d22f772
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "Alle inkomende oproepen geblokkeerd"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "Alle uitgaande oproepen geblokkeerd"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "Alle oproepen doorschakelen"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "Oproepen doorschakelen bij geen antwoord"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "Doorschakelen indien onbereikbaar"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "Doorschakelen bij in gesprek"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "Inkomende oproepen in buitenland geblokkeerd"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "Uitgaande internationale oproepen geblokkeerd behalve naar eigen land"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "Uitgaande internationale oproepen geblokkeerd"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "voor Alle teleservices behalve SMS"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "Alle oproepen"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "Oproepen blokkeren"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "Oproepen doorschakelen"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "Wisselgesprek"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "Geef het nummer in"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "Voorwaardelijk"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "Alle asynchrone gegevens"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "Alle dragerdiensten"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "Alle datadiensten"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "Alle PADCA-diensten"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "Alle PDS-diensten"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "Alle PLMN-dragers"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "Alle diensten"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "Alle synchrone diensten"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "Alle telecom-diensten"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "Gebelde nummer niet tonen tijdens oproep"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "Gebelde nummer tonen tijdens oproep"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "Asynchrone datadiensten"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "Beller-id beschikbaar"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "Beller-id verborgen"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "Beller-ID beperkt"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "Info beller tonen"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Mijn nummer niet\ntonen bij\ninkomende oproep"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "Mijn nummer\nniet tonen\nbij uitgaande oproep"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Mijn nummer tonen\nbij inkomende\noproep"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "Mijn nummer tonen\nbij uitgaande\noproep"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "Wachtwoord geblokkeerd"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "Geweigerd door netwerk"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "Aanvragen..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "Dienst niet toegestaan"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "Alles geblokkeerd"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "Inkomend blokkeren"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "Uitgaand blokkeren"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "Service niet beschikbaar"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "Wachtwoord onjuist"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "Wachtwoord wijzigen"
+
diff --git a/po/pt_PT.po b/po/pt_PT.po
new file mode 100755 (executable)
index 0000000..ba890d6
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "Todas as chamadas recebidas restringidas"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "Todas as chamadas efectuadas restringidas"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "Desvio de chamadas activado: Sempre"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "Desvio de chamadas activado: Não atende"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "Desvio de chamadas activado: Incontactável"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "Desvio de chamadas activado: Se ocupado"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "Chamadas recebidas barradas quando em roaming"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "Chamadas internacionais efectuadas barradas excepto para origem"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "Chamadas internacionais restringidas"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "para todos os serviços Tele excepto SMS"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "Todas as chamadas"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "Barramento de chamadas"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "Desvio de chamadas"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "Chamada em espera"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "Introduzir número"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "Fax"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "Condicional"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "Todos os dados assíncronos"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "Todos os serviços da portadora"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "Todos os serviços de dados"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "Todos os serviços PADCA"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "Todos os serviços PDS"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "Todas as portadoras PLMN"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "Todos os serviços"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "Todos os serviços síncronos"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "Todos os serviços de telecomunicações"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "Número de atendimento não é mostrado ao efectuar chamada"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "Número de atendimento é mostrado ao efectuar chamada"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "Serviços de dados assíncronos"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "ID de chamador disponível"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "ID de chamador oculto"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "ID do chamador restringido"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "ID do chamador exibido"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "O meu ID de chamador não é enviado durante o atendimento de chamadas"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "O meu ID de chamador não é enviado durante a realização de chamadas"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "O meu ID de chamador é enviado durante o atendimento de chamadas"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "O meu ID de chamador é enviado durante a realização de chamadas"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "Palavra-passe bloqueada"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "Rejeitado pela rede"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "A pedir..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "Serviço não autorizado"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "Todos os barramentos"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "Barramento de recepção"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "Barramento de efectuadas"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "Serviço não disponível"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "Palavra-passe inválida"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "Alterar palavra-passe"
+
diff --git a/po/ru_RU.po b/po/ru_RU.po
new file mode 100755 (executable)
index 0000000..96f6409
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "Все входящие вызовы запрещены"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "Все исходящие вызовы\nзапрещены"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "Переадресация вызовов: Всегда"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "Переадресация вызова: Нет ответа"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "Переадресация вызовов: Если недоступен"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "Переадресация вызова: Если занято"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "Входящие вызовы запрещены при роуминге"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "Запрет исходящих международных вызовов, кроме домашних"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "Исходящие международные\nвызовы запрещены"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "для всех услуги связи SMS"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "Все вызовы"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "Запрет вызова"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "Переадресация вызова"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "Ожидание вызова"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "Введите номер"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "Факс"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "Условная"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "Все асинхронные данные"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "Все услуги каналов"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "Все услуги данных"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "Все услуги PADCA"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "Все услуги PDS"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "Все каналы PLMN"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "Все услуги"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "Все синхронные услуги"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "Все услуги связи"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "Не отображать номер абонента при ответе на вызов"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "Отображать номер абонента при ответе на вызов"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "Асинхронные услуги данных"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "Фотоопределитель доступен"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "Фотоопределитель скрыт"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "Фотоопределитель ограничен"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "Фотоопределитель отображается"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Не передавать мой номер при ответе на вызовы"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "Не передавать мой номер во время вызова"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Мой номер отправляется при ответе на вызов"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "Мой номер отправляется при вызове"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "Пароль заблокирован"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "Отклонено сетью"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "Запрос..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "Услуга не разрешена"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "Все запрещены"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "Запрет входящих"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "Запрет исходящих"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "Услуга недоступна"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "Неправильный пароль"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "Изменить пароль"
+
diff --git a/po/test.pot b/po/test.pot
new file mode 100755 (executable)
index 0000000..d900988
--- /dev/null
@@ -0,0 +1,30 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-11-30 15:21+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: test.c:40
+msgid "Application template"
+msgstr ""
+
+#: test.c:41
+msgid "Click to exit"
+msgstr ""
+
+#. SLP_appfwk_set_window_size(480, 800);
+#: test.c:94
+msgid "FONT_NAME"
+msgstr ""
diff --git a/po/tr_TR.po b/po/tr_TR.po
new file mode 100755 (executable)
index 0000000..e92ec19
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "Gelen tüm aramalar engellendi"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "Giden tüm aramalar engellendi"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "Arama yönlendirme etkin: Her zaman"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "Arama yönlendirme etkin: Cevap yokken"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "Arama yönlendirme etkin: Ulaşılamadığında"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "Arama yönlendirme etkin: Meşgulken"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "Geçiş yaparken gelen arama engelleme"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "Yurt için hariç uluslar arası gideni engelle"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "Giden uluslararası aramalar engellendi"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "SMS hariç Tüm Tele hizmetleri için"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "Tüm aramalar"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "Arama engelleme"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "Arama yönlendirme"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "Arama bekletme"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "Numarayı girin"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "Faks"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "Koşullu"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "Tüm asenkron veriler"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "Tüm taşıyıcı servisleri"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "Tüm veri servisleri"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "Tüm PADCA servisleri"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "Tüm PDS servisleri"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "Tüm PLMN taşıyıcıları"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "Tüm servisler"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "Tüm senkron servisler"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "Tüm telekom servisleri"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "Arama sırasında cevaplayan numara gösterilmez"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "Arama sırasında cevaplayan numara gösterilir"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "Asenk. veri servisleri"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "Arayan kimliği var"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "Arayan kimliği gizli"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "Arayan kimliği kısıtlı"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "Arayan kimliği gösterildi"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Arayan kişi kimliğim aramaları cevaplarken gönderilmez"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "Arayan kişi kimliği arama yaparken gönderilmez"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "Arayan kişi kimliğim aramaları cevaplarken gönderilir"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "Arayan kişi kimliğim arama yaparken gönderilir"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "Şifre engellendi"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "Şebeke tarafından reddedildi"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "İstek gönderiliyor..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "Servise izin verilmemiş"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "Tümünü engelleme"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "Gelen engellemeler"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "Giden engelleme"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "Servis Kullanılamıyor"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "Yanlış şifre"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "Şifre değiştir"
+
diff --git a/po/update-po.sh b/po/update-po.sh
new file mode 100755 (executable)
index 0000000..82f01f8
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+PACKAGE=ciss
+SRCROOT=..
+POTFILES=POTFILES.in
+
+ALL_LINGUAS= am az be ca cs da de el en_CA en_GB es et fi fr hr hu it ja ko lv mk ml ms nb ne nl pa pl pt pt_BR ru rw sk sl sr sr@Latn sv ta tr uk vi zh_CN zh_TW
+#ALL_LINGUAS="en_US en_GB ja ko zh_CN"
+
+XGETTEXT=/usr/bin/xgettext
+MSGMERGE=/usr/bin/msgmerge
+
+echo -n "Make ${PACKAGE}.pot  "
+if [ ! -e $POTFILES ] ; then
+       echo "$POTFILES not found"
+       exit 1
+fi
+
+$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \
+               --add-comments --keyword=_ --keyword=N_ --files-from=$POTFILES \
+&& test ! -f ${PACKAGE}.po \
+       || (rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot)
+
+if [ $? -ne 0 ]; then
+       echo "error"
+       exit 1
+else
+       echo "done"
+fi
+
+for LANG in $ALL_LINGUAS; do 
+       echo "$LANG : "
+
+       if [ ! -e $LANG.po ] ; then
+               sed 's/CHARSET/UTF-8/g' ${PACKAGE}.pot > ${LANG}.po
+               echo "${LANG}.po created"
+       else
+               if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then
+                       if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then
+                               rm -f ${LANG}.new.po
+                       else
+                               if mv -f ${LANG}.new.po ${LANG}.po; then
+                                       echo "" 
+                               else
+                                       echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2
+                                       rm -f ${LANG}.new.po
+                                       exit 1
+                               fi
+                       fi
+               else
+                       echo "msgmerge for $LANG failed!"
+                       rm -f ${LANG}.new.po
+               fi
+       fi
+       echo ""
+done
+
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100755 (executable)
index 0000000..69105e8
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "禁止所有来电"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "禁止全部拨出电话"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "激活呼叫转移:始终"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "激活呼叫转移:无应答"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "激活呼叫转移:无法接通"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "激活呼叫转移:遇忙"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "漫游时呼入限制"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "除本国外的国际呼出"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "禁止拨打国际长途"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "用于除短信息以外的所有电信服务"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "全部通话"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "呼叫限制"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "呼叫转移"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "呼叫等待"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "输入号码"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "传真"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "有条件的"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "全部同步数据"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "全部承载业务"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "全部数据业务"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "全部 PADCA 服务"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "全部 PDS 服务"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "全部PLMN承载器"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "全部业务"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "全部同步服务"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "全部电信服务"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "通话时,不显示应答号码"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "通话时,显示应答号码"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "异步数据服务"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "来电者显示图像可用"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "来电者显示图像已隐藏"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "来电者显示图像已限制"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "来电者显示图像已显示"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "接听来电时将发送我的呼叫者 ID"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "拨打电话时未发送我的来电者显示图像"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "应答来电时将发送我的来电者显示图像"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "拨打电话时将发送我的来电者显示图像"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "密码已锁定"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "因网络问题而被拒绝"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "要求中..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "服务未授权"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "呼叫限制"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "来电禁止"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "拨号禁止"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "服务无法正常提供"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "无效密码"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "更改密码"
+
diff --git a/po/zh_HK.po b/po/zh_HK.po
new file mode 100755 (executable)
index 0000000..96a78d0
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "已限制全部來電"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "已限制所有撥出電話"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "轉駁來電:全部轉駁"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "轉駁來電:無人接聽"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "來電轉駁:無法接通"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "來電轉駁:線路繁忙"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "漫遊時來電限制"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "限制撥出國際電話(本地除外)"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "已限制撥出國際長途電話"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "適用於全部電話服務(SMS 除外)"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "全部通話"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "通話限制"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "來電轉駁"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "來電待接"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "輸入號碼"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "傳真"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "條件性的"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "全部非同步數據"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "全部承載服務"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "全部數據服務"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "全部 PADCA 服務"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "全部 PDS 服務"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "全部 PLMN 承載器"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "全部服務"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "全部同步服務"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "全部電訊服務"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "通話時不顯示接聽電話號碼"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "通話時顯示接聽電話號碼"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "非同步數據服務"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "來電顯示可用"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "已隱藏來電顯示"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "已限制來電顯示"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "已顯示來電顯示"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "我的來電顯示不會在接聽來電時送出"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "我的來電顯示不會在撥出電話時送出"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "我的來電顯示將在接聽來電時送出"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "我的來電顯示將在撥出電話時送出"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "已封鎖密碼"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "被網絡拒絕"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "正在請求..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "服務未授權"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "全部限制"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "來電限制"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "撥出限制"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "無可用服務"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "密碼無效"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "更改密碼"
+
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100755 (executable)
index 0000000..5905904
--- /dev/null
@@ -0,0 +1,141 @@
+msgid "IDS_CALL_POP_ALL_INCOMING_CALLS_BARRED"
+msgstr "已限制所有來電"
+
+msgid "IDS_CALL_POP_ALL_OUTGOING_CALLS_BARRED"
+msgstr "已阻止所有撥出電話"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_ALWAYS"
+msgstr "轉移呼叫:永遠"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_NO_ANSWER"
+msgstr "轉移呼叫:無人接聽"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_UNREACHABLE"
+msgstr "轉移呼叫:無法接通"
+
+msgid "IDS_CALL_POP_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY"
+msgstr "轉移呼叫:忙線時"
+
+msgid "IDS_CALL_POP_INCOMING_CALLS_BARRED_WHEN_ROAMING"
+msgstr "漫遊時限制來電"
+
+msgid "IDS_CALL_POP_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED"
+msgstr "限制撥出國際電話(本國除外)"
+
+msgid "IDS_CALL_POP_OUTGOING_INTER_CALLS_BARRED"
+msgstr "已限制撥出國際電話"
+
+msgid "IDS_COM_POP_FOR_ALL_TELE_SERVICES_EXCEPT_SMS"
+msgstr "適用於所有電信服務(SMS 除外)"
+
+msgid "IDS_CST_BODY_ALL_CALLS"
+msgstr "全部通話"
+
+msgid "IDS_CST_BODY_CALL_BARRING"
+msgstr "通話限制"
+
+msgid "IDS_CST_BODY_CALL_DIVERTING"
+msgstr "呼叫轉移"
+
+msgid "IDS_CST_BODY_CALL_WAITING"
+msgstr "來電等待"
+
+msgid "IDS_CST_BODY_ENTER_NUMBER"
+msgstr "輸入號碼"
+
+msgid "IDS_CST_BODY_FAX"
+msgstr "傳真"
+
+msgid "IDS_CST_HEADER_CONDITIONAL"
+msgstr "條件式"
+
+msgid "IDS_CST_POP_ALL_ASYNCHRONOUS_DATA"
+msgstr "所有非同步資料"
+
+msgid "IDS_CST_POP_ALL_BEARER_SERVICES"
+msgstr "所有承載者服務"
+
+msgid "IDS_CST_POP_ALL_DATA_SERVICES"
+msgstr "所有資料服務"
+
+msgid "IDS_CST_POP_ALL_PADCA_SERVICES"
+msgstr "所有 PADCA 服務"
+
+msgid "IDS_CST_POP_ALL_PDS_SERVICES"
+msgstr "所有 PDS 服務"
+
+msgid "IDS_CST_POP_ALL_PLMN_BEARERS"
+msgstr "所有 PLMN 承載者"
+
+msgid "IDS_CST_POP_ALL_SERVICES"
+msgstr "所有服務"
+
+msgid "IDS_CST_POP_ALL_SYNCHRONOUS_SERVICES"
+msgstr "所有同步服務"
+
+msgid "IDS_CST_POP_ALL_TELECOM_SERVICES"
+msgstr "所有電訊服務"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING"
+msgstr "通話時不顯示接聽電話號碼"
+
+msgid "IDS_CST_POP_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING"
+msgstr "通話時顯示接聽電話號碼"
+
+msgid "IDS_CST_POP_ASYNCHRONOUS_DATA_SERVICES"
+msgstr "非同步資料服務"
+
+msgid "IDS_CST_POP_CALLER_ID_AVAILABLE"
+msgstr "來電顯示可用"
+
+msgid "IDS_CST_POP_CALLER_ID_HIDDEN"
+msgstr "已隱藏來電顯示"
+
+msgid "IDS_CST_POP_CALLER_ID_RESTRICTED"
+msgstr "已限制來電顯示"
+
+msgid "IDS_CST_POP_CALLER_ID_SHOWN"
+msgstr "已顯示來電顯示"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS"
+msgstr "不在接聽來電時送出我的來電顯示"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING"
+msgstr "我的來電顯示不在撥打電話時送出"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS"
+msgstr "我的來電顯示將在接聽來電時送出"
+
+msgid "IDS_CST_POP_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING"
+msgstr "我的來電顯示將在撥打電話時送出"
+
+msgid "IDS_CST_POP_PASSWORD_BLOCKED"
+msgstr "已封鎖密碼"
+
+msgid "IDS_CST_POP_REJECTED_BY_NETWORK"
+msgstr "已遭網路拒絕"
+
+msgid "IDS_CST_POP_REQUESTING_ING"
+msgstr "正在請求..."
+
+msgid "IDS_CST_POP_SERVICE_NOT_AUTHORISED"
+msgstr "服務未經授權"
+
+msgid "IDS_ST_POP_ALL_BARRING"
+msgstr "全部限制"
+
+msgid "IDS_ST_POP_INCOMING_BARRING"
+msgstr "限制來電"
+
+msgid "IDS_ST_POP_OUTGOING_BARRING"
+msgstr "限制撥出"
+
+msgid "IDS_CST_POP_SERVICE_UNAVAILABLE"
+msgstr "無法使用服務"
+
+msgid "IDS_CST_POP_INVALID_PASSWORD"
+msgstr "密碼無效"
+
+msgid "IDS_CST_OPT_CHANGE_PASSWORD"
+msgstr "更改密碼"
+
diff --git a/resource/ciss-mmi.edc b/resource/ciss-mmi.edc
new file mode 100755 (executable)
index 0000000..32c866d
--- /dev/null
@@ -0,0 +1,107 @@
+collections {
+group { name: "popup_progress";
+       parts {
+               part { name: "pad_t";
+                       scale : 1;
+                       mouse_events: 0;
+                       repeat_events: 1;
+                       description { state: "default" 0.0;
+                               align: 0.5 0.0;
+                               min: 0 14;
+                               fixed: 0 1;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                                       to_x: "pad_l";
+                               }
+                               rel2 {
+                                       relative: 0.0 0.0;
+                                       to_x: "pad_r";
+                               }
+                       }
+               }
+               part { name: "pad_l";
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               min : 10 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                       }
+               }
+               part { name: "pad_r";
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               min : 10 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+                       }
+               }
+               part{ name:"elm.swallow.content";
+                       type: SWALLOW;
+                       scale : 1;
+                       description { state: "default" 0.0;
+                               min: 300 0;
+                               align: 0.5 0.5;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 0.5 1.0;
+                                       to: "pad_t";
+                               }
+                               rel2 {
+                                       relative: 0.5 0.0;
+                                       to: "pad_b";
+                               }
+                       }
+               }
+               part { name: "pad_b";
+                       scale : 1;
+                       mouse_events: 0;
+                       repeat_events: 1;
+                       description { state: "default" 0.0;
+                               align: 0.5 1.0;
+                               min: 0 90;
+                               fixed: 0 1;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "pad_l";
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                                       to_x: "pad_r";
+                               }
+                       }
+               }
+
+               part { name: "elm.swallow.end";
+                       type: SWALLOW;
+                       scale : 1;
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       description { state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                               to: "pad_b";
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       to: "pad_b";
+                               }
+                       }
+               }
+
+       }
+}
+}
diff --git a/src/ciss-converter.c b/src/ciss-converter.c
new file mode 100755 (executable)
index 0000000..847b51a
--- /dev/null
@@ -0,0 +1,753 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include "ciss-converter.h"
+
+static const sc_table_element_type sc_conversion_table_ss[] = {
+       {CISS_ENG_SC_CF,                TAPI_SS_FORWARD_WHEN_ALL_FORWARDING_EV,                 TAPI_SS_TYPE_FORWARDING},
+       {CISS_ENG_SC_CFC,               TAPI_SS_FORWARD_WHEN_ALL_CONDITIONAL_EV,                TAPI_SS_TYPE_FORWARDING},
+       {CISS_ENG_SC_CFU,               TAPI_SS_FORWARD_WHEN_UNCONDITIONAL_EV,                  TAPI_SS_TYPE_FORWARDING},
+       {CISS_ENG_SC_CFB,               TAPI_SS_FORWARD_WHEN_BUSY_EV,                                           TAPI_SS_TYPE_FORWARDING},
+       {CISS_ENG_SC_CFNRY,     TAPI_SS_FORWARD_WHEN_NO_ANSWER_EV,                              TAPI_SS_TYPE_FORWARDING},
+       {CISS_ENG_SC_CFNRC,     TAPI_SS_FORWARD_WHEN_NOT_REACHABLE_EV,                  TAPI_SS_TYPE_FORWARDING},
+       {CISS_ENG_SC_CLIP,              TAPI_SS_CLI_CLIP,                                                                       TAPI_SS_TYPE_IDENTIFICATION},
+       {CISS_ENG_SC_CLIR,              TAPI_SS_CLI_CLIR,                                                                       TAPI_SS_TYPE_IDENTIFICATION},
+       {CISS_ENG_SC_COLP,              TAPI_SS_CLI_COLP,                                                                       TAPI_SS_TYPE_IDENTIFICATION},
+       {CISS_ENG_SC_COLR,              TAPI_SS_CLI_COLR,                                                                       TAPI_SS_TYPE_IDENTIFICATION},
+       {CISS_ENG_SC_CNAP,              TAPI_SS_CLI_CNAP,                                                                       TAPI_SS_TYPE_IDENTIFICATION},
+       {CISS_ENG_SC_CW,                0,                                                                                                      TAPI_SS_TYPE_WAITING},
+       {CISS_ENG_SC_B,                 TAPI_CALL_BARRING_ALL,                                                          TAPI_SS_TYPE_BARRING},
+       {CISS_ENG_SC_OB,                TAPI_CALL_BARRING_OUTGOING,                                             TAPI_SS_TYPE_BARRING},
+       {CISS_ENG_SC_IB,                TAPI_CALL_BARRING_INCOMING,                                             TAPI_SS_TYPE_BARRING},
+       {CISS_ENG_SC_BAOC,              TAPI_CALL_BARRING_ALL_OUTGOING_CALLS,                           TAPI_SS_TYPE_BARRING},
+       {CISS_ENG_SC_BOIC,              TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL,             TAPI_SS_TYPE_BARRING},
+       {CISS_ENG_SC_BOICEXHC,  TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL_EXCEPT,      TAPI_SS_TYPE_BARRING},
+       {CISS_ENG_SC_BAIC,              TAPI_CALL_BARRING_ALL_INCOMING_CALLS,                           TAPI_SS_TYPE_BARRING},
+       {CISS_ENG_SC_BICROAM,   TAPI_CALL_BARRING_ALL_INCOMING_CALLS_ROAMING,           TAPI_SS_TYPE_BARRING}
+};
+
+/* table for conversion between local basic service group (BSG)
+   and tapi BSG.
+
+       elements represent - local BSG value,
+       BSG code : basic service code (BS code) or
+       tele  service code (TS code)
+       tapi BSG value
+
+*/
+
+/* need to find mapping with the call type or forward type for call barring and call diverting else not required */
+static const bsg_table_element_type bsg_conversion_table[MAX_BSG_ENTRY] = {
+       {CISS_ENG_BSG_ALL,                      0,                  TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES},
+       {CISS_ENG_BSG_ALL_TS,                   TS_CODE,   TAPI_SS_TS_ALL_TELESERVICES},
+       {CISS_ENG_BSG_TELEPHONY,        TS_CODE,   TAPI_SS_TS_ALL_SPEECH },
+       /* ALS_SUPPORT : added mapping  for auxilliary telephony */
+#ifdef FEATURE_SAMSUNG_ALS
+       {CISS_ENG_BSG_AUX_TELEPHONY,    TS_CODE,   TAPI_SS_TS_AUX_VOICE},
+#endif
+       {CISS_ENG_BSG_ALL_DATA,         TS_CODE,   TAPI_SS_TS_ALL_DATA_TELESERVICES},
+       {CISS_ENG_BSG_FAX,                      TS_CODE,   TAPI_SS_TS_FACS},
+       {CISS_ENG_BSG_SMS,                      TS_CODE,   TAPI_SS_TS_SMS},
+       {CISS_ENG_BSG_ALL_TELE_EX_SMS,  TS_CODE,   TAPI_SS_TS_ALL_TELESERVICES_EXCEPT_SMS},
+       {CISS_ENG_BSG_PLMN_TELE_ALL,    TS_CODE,   TAPI_SS_TS_ALL_PLMN_SPEC_TELE },
+       {CISS_ENG_BSG_PLMN_TELE_1,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_1},
+       {CISS_ENG_BSG_PLMN_TELE_2,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_2},
+       {CISS_ENG_BSG_PLMN_TELE_3,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_3},
+       {CISS_ENG_BSG_PLMN_TELE_4,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_4},
+       {CISS_ENG_BSG_PLMN_TELE_5,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_5},
+       {CISS_ENG_BSG_PLMN_TELE_6,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_6},
+       {CISS_ENG_BSG_PLMN_TELE_7,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_7},
+       {CISS_ENG_BSG_PLMN_TELE_8,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_8},
+       {CISS_ENG_BSG_PLMN_TELE_9,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_9},
+       {CISS_ENG_BSG_PLMN_TELE_A,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_A},
+       {CISS_ENG_BSG_PLMN_TELE_B,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_B},
+       {CISS_ENG_BSG_PLMN_TELE_C,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_C},
+       {CISS_ENG_BSG_PLMN_TELE_D,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_D},
+       {CISS_ENG_BSG_PLMN_TELE_E,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_E},
+       {CISS_ENG_BSG_PLMN_TELE_F,      TS_CODE,   TAPI_SS_TS_PLMN_SPEC_TELE_F},
+       {CISS_ENG_BSG_ALL_BS,                   BS_CODE,   TAPI_SS_BS_ALL_BEARER_SERVICES},
+       {CISS_ENG_BSG_ALL_ASYNC,        BS_CODE,   TAPI_SS_BS_ALL_ASYNCHRONOUS},
+       {CISS_ENG_BSG_ALL_SYNC,         BS_CODE,   TAPI_SS_BS_ALL_SYNCHRONOUS},
+       {CISS_ENG_BSG_ALL_DC_SYNC,      BS_CODE,   TAPI_SS_BS_DATA_CIRCUIT_SYNC},
+       {CISS_ENG_BSG_ALL_DC_ASYNC,     BS_CODE,   TAPI_SS_BS_DATA_CIRCUIT_ASYNC},
+       {CISS_ENG_BSG_ALL_DED_PACKET,   BS_CODE,   TAPI_SS_BS_DATA_ALL_PDS},
+       {CISS_ENG_BSG_ALL_DED_PAD,      BS_CODE,   TAPI_SS_BS_ALL_DATA_PADCA},
+       {CISS_ENG_BSG_PLMN_BEAR_ALL,    BS_CODE,   TAPI_SS_BS_ALL_PLMN_SPEC_BS},
+       {CISS_ENG_BSG_PLMN_BEAR_1,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_1},
+       {CISS_ENG_BSG_PLMN_BEAR_2,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_2},
+       {CISS_ENG_BSG_PLMN_BEAR_3,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_3},
+       {CISS_ENG_BSG_PLMN_BEAR_4,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_4},
+       {CISS_ENG_BSG_PLMN_BEAR_5,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_5},
+       {CISS_ENG_BSG_PLMN_BEAR_6,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_6},
+       {CISS_ENG_BSG_PLMN_BEAR_7,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_7},
+       {CISS_ENG_BSG_PLMN_BEAR_8,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_8},
+       {CISS_ENG_BSG_PLMN_BEAR_9,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_9},
+       {CISS_ENG_BSG_PLMN_BEAR_A,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_A},
+       {CISS_ENG_BSG_PLMN_BEAR_B,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_B},
+       {CISS_ENG_BSG_PLMN_BEAR_C,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_C},
+       {CISS_ENG_BSG_PLMN_BEAR_D,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_C},
+       {CISS_ENG_BSG_PLMN_BEAR_E,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_D},
+       {CISS_ENG_BSG_PLMN_BEAR_F,      BS_CODE,   TAPI_SS_BS_PLMN_SPEC_TELE_F}
+};
+
+int _ciss_convert_bsg_to_tapi_bsg(char *local_bsg, TelSsTeleService_t *tapi_bsg)
+{
+       int valid_bsg = false;
+
+       int n = 0;
+       int local_bsg_len =0;
+
+       local_bsg_len = strlen(local_bsg);
+       if (local_bsg_len > MAX_BSG_LEN)
+               return false;
+
+       DBG("\n [CISS-ENGINE] local_bsg : %s", local_bsg);
+       while (n < MAX_BSG_ENTRY) {\r
+               DBG("\n [CISS-ENGINE] n : %d", n);
+               if (!strncmp(bsg_conversion_table[n].local_bsg, local_bsg, MAX_SC_LEN)) {
+                       DBG("\n [CISS-ENGINE] bsg_conversion_table[n].local_bsg : %s", bsg_conversion_table[n].local_bsg);
+                       *tapi_bsg = bsg_conversion_table[n].tapi_bsg_code;
+                       valid_bsg = TRUE;
+                       break;
+               }
+               n++;
+       }
+       DBG("\n [CISS-ENGINE] end _ciss_convert_bsg_to_tapi_bsg()");
+       return(valid_bsg);
+}
+
+int _ciss_convert_sc_to_tapi_flavor(char *sc, unsigned char *tapi_flavor, unsigned char *ss_type)
+{
+       int valid_sc = false;
+
+       int n = 0;
+       DBG("\n [CISS-ENGINE] sc : %s", sc);
+       while (n < MAX_SC_ENTRY) {
+               if (!strncmp(sc_conversion_table_ss[n].local_sc, sc, MAX_SC_LEN)) {
+                       DBG("\n [CISS-ENGINE] sc_conversion_table_ss[n].local_sc : %s", sc_conversion_table_ss[n].local_sc);
+                       *tapi_flavor = sc_conversion_table_ss[n].tapi_flavor;
+                       *ss_type = sc_conversion_table_ss[n].ss_type;
+                       valid_sc = TRUE;
+                       break;
+               }
+               n++;
+       }
+       return(valid_sc);
+}
+
+int _ciss_get_tapi_forward_type(TelSsTeleService_t TelecommSvc, TelSsForwardType_t *pForwardType)
+{
+       switch (TelecommSvc) {
+       case TAPI_SS_TS_ALL_SPEECH:
+               *pForwardType = TAPI_CS_FORWARD_TYPE_VOICE_EV;
+               DBG("\n [CISS-ENGINE] ********TAPI_SS_TS_ALL_SPEECH\n");
+               break;
+       case TAPI_SS_TS_ALL_TELESERVICES:
+               *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_TELE;
+               DBG("\n [CISS-ENGINE] ********TAPI_SS_TS_ALL_TELESERVICES\n");
+               break;
+       case TAPI_SS_TS_FACS:
+               *pForwardType = TAPI_CS_FORWARD_TYPE_FAX_EV;
+               break;
+       case TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES:
+               *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_TELE_BEARER;
+               break;
+       case TAPI_SS_BS_ALL_ASYNCHRONOUS:
+               *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_ASYNC_EV;
+               break;
+       case TAPI_SS_BS_ALL_SYNCHRONOUS:
+               *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_SYNC_EV;
+               break;
+       case TAPI_SS_BS_ALL_BEARER_SERVICES:
+       case TAPI_SS_BS_DATA_CIRCUIT_SYNC:
+               *pForwardType = TAPI_CS_FORWARD_TYPE_DATA_EV;
+               DBG("\n [CISS-ENGINE] ********TAPI_SS_BS_DATA_CIRCUIT_SYNC\n");
+               break;
+       case TAPI_SS_TS_SMS:
+               *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_SYNC_EV;
+               break;
+       default:
+               DBG("\n [CISS-ENGINE] _ciss_get_tapi_forward_type:undefined =%d\n", TelecommSvc);
+               *pForwardType = TAPI_CS_FORWARD_TYPE_ALL_TELE_BEARER;
+               break;
+       }
+
+       DBG("\n [CISS-ENGINE] TelecommSvc = %d, pForwardType= %d\n", TelecommSvc, *pForwardType);
+       return TRUE;
+}
+
+int _ciss_get_tapi_call_type(TelSsTeleService_t TelecommSvc, TelSsCallType_t *pCallType)
+{
+       switch (TelecommSvc) {
+       case TAPI_SS_TS_ALL_SPEECH:     /* Voice */
+               *pCallType = TAPI_CALL_TYPE_VOICE_EV;
+               DBG("\n [CISS-ENGINE] ********TAPI_SS_TS_ALL_SPEECH\n");
+               break;
+       case TAPI_SS_TS_ALL_TELESERVICES:
+               *pCallType = TAPI_CALL_TYPE_ALL_TELE;
+               DBG("\n [CISS-ENGINE] ********TAPI_SS_TS_ALL_TELESERVICES\n");
+               break;
+       case TAPI_SS_TS_ALL_DATA_TELESERVICES:  /* Data */
+               *pCallType = TAPI_CALL_TYPE_DATA_EV;
+               break;
+       case TAPI_SS_TS_FACS:   /* Fax */
+               *pCallType = TAPI_CALL_TYPE_FAX_EV;
+               break;
+
+       case TAPI_SS_TS_SMS:    /* SMS */
+               *pCallType = TAPI_CALL_TYPE_SHORT_MESS_EV;
+               break;
+       case TAPI_SS_BS_ALL_ASYNCHRONOUS:
+               *pCallType = TAPI_CALL_TYPE_ALL_ASYNC_EV;
+               break;
+       case TAPI_SS_BS_ALL_SYNCHRONOUS:
+               *pCallType = TAPI_CALL_TYPE_ALL_SYNC_EV;
+               break;
+       case TAPI_SS_BS_ALL_BEARER_SERVICES:    /* Video */
+       case TAPI_SS_BS_DATA_CIRCUIT_SYNC:
+               *pCallType = TAPI_CALL_TYPE_DATA_CIRCUIT_SYNC_EV;
+               DBG("\n [CISS-ENGINE] ********TAPI_SS_BS_DATA_CIRCUIT_SYNC\n");
+               break;
+       case TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES:   /* ALL */
+               *pCallType = TAPI_CALL_TYPE_ALL_TELE_BEARER;
+               break;
+       default:
+               DBG("\n [CISS-ENGINE] _ciss_get_tapi_call_type:undefined =%d\n", TelecommSvc);
+               *pCallType = TAPI_CALL_TYPE_ALL_TELE_BEARER;
+               break;
+       }
+       return TRUE;
+}
+
+int _ciss_get_error_from_tapi_error(ciss_err_t *ciss_err, TelSsCause_t tapi_err)
+{
+       DBG("\n [CISS-ENGINE] _ciss_get_error_from_tapi_error:defined =%x\n", tapi_err);
+       switch (tapi_err) {
+       case TAPI_SS_UNKNOWNSUBSCRIBER:
+               *ciss_err = CISS_ERR_UNKNOWN_SUBSCRIBER;
+               break;
+       case TAPI_SS_BEARERSERVICENOTPROVISIONED:
+               *ciss_err = CISS_ERR_BEARER_NOT_PROVISIONED;
+               break;
+       case TAPI_SS_TELESERVICENOTPROVISIONED:
+               *ciss_err = CISS_ERR_TELESERVICE_NOT_PROVISIONED;
+               break;
+       case TAPI_SS_CALLBARRED:
+               *ciss_err = CISS_ERR_CALL_BARRED;
+               break;
+       case TAPI_SS_ILLEGALSSOPERATION:
+               *ciss_err = CISS_ERR_ILLEGAL_SS_OPER;
+               break;
+       case TAPI_SS_ERRORSTATUS:
+               *ciss_err = CISS_ERR_ERR_STATUS;
+               break;
+       case TAPI_SS_NOTAVAILABLE:
+               *ciss_err = CISS_ERR_NOT_AVAIL;
+               break;
+       case TAPI_SS_SUBSCRIPTIONVIOLATION:
+               *ciss_err = CISS_ERR_SUBSCRIPTION_VIOLATION;
+               break;
+       case TAPI_SS_INCOMPATIBILITY:
+               *ciss_err = CISS_ERR_INCOMPATIBILITY;
+               break;
+       case TAPI_SS_FACILITYNOTSUPPORTED:
+               *ciss_err = CISS_ERR_FACILITY_NOT_SUPPORT;
+               break;
+       case TAPI_SS_SYSTEMFAILURE:
+               *ciss_err = CISS_ERR_SYS_FAILURE;
+               break;
+       case TAPI_SS_DATAMISSING:
+               *ciss_err = CISS_ERR_DATA_MISSING;
+               break;
+       case TAPI_SS_UNEXPECTEDDATAVALUE:
+               *ciss_err = CISS_ERR_UNEXPECTED_DATA;
+               break;
+       case TAPI_SS_MAXNOMPTYEXCEEDED:
+               *ciss_err = CISS_ERR_MPTY_PARTICIPANTS_EXCEED;
+               break;
+       case TAPI_SS_RESOURCESNOTAVAILABLE:
+               *ciss_err = CISS_ERR_RESOURCE_NOT_AVAIL;
+               break;
+       case TAPI_SS_PWREGISTRATIONFAILURE:
+               *ciss_err = CISS_ERR_PW_REGIST_FAIL;
+               break;
+       case TAPI_SS_NEGATIVEPWCHECK:
+               *ciss_err = CISS_ERR_NEGATIVE_PW_CHECK;
+               break;
+       case TAPI_SS_NUMBEROFPWATTEMPTSVIOLATION:
+               *ciss_err = CISS_ERR_PW_ATTEMPS_VIOLATION;
+               break;
+       default:
+               DBG("\n [CISS-ENGINE] _ciss_get_error_from_tapi_error:undefined =%x\n", tapi_err);
+               *ciss_err = CISS_ERR_UNKNOWN;
+               break;
+       }
+       return TRUE;
+}
+
+int _ciss_get_tapi_ussd_resp_type(ciss_ussd_response_type_t resp_type, TelSsUssdRespType_t *pTapiRespType)
+{
+       DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_resp_type:defined =%d\n", resp_type);
+       switch (resp_type) {
+       case CISS_USSD_RES_UNKNOWN_ALPHABET:
+               *pTapiRespType = TAPI_USSD_RES_UNKNOWN_ALPHABET;
+               break;
+       case CISS_USSD_RES_DISPL_BUSY:
+               *pTapiRespType = TAPI_USSD_RES_DISPL_BUSY;
+               break;
+       case CISS_USSD_RES_OK:
+               *pTapiRespType = TAPI_USSD_RES_OK;
+               break;
+       case CISS_USSD_RES_NONE:
+               *pTapiRespType = TAPI_USSD_RES_NONE;
+               break;
+       default:
+               DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_resp_type:undefined =%d\n", resp_type);
+               break;
+       }
+       return TRUE;
+}
+
+int _ciss_get_tapi_ussd_ind_type(ciss_ussd_ind_type_t ind_type, TelSsUssdIndType_t *pTapiIndType)
+{
+       DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_ind_type:defined =%d\n", ind_type);
+       switch (ind_type) {
+       case CISS_USSD_NOTIFY:
+               *pTapiIndType = TAPI_USSD_IND_NOTIFY;
+               break;
+       case CISS_USSD_IND_NO_ACTION_REQUIRE:
+               *pTapiIndType = TAPI_USSD_IND_NO_ACTION_REQUIRE;
+               break;
+       case CISS_USSD_IND_ACTION_REQUIRE:
+               *pTapiIndType = TAPI_USSD_IND_ACTION_REQUIRE;
+               break;
+       case CISS_USSD_TERMINATED_BY_NET:
+               *pTapiIndType = TAPI_USSD_IND_TERMINATED_BY_NET;
+               break;
+       case CISS_USSD_OTHER_CLIENT:
+               *pTapiIndType = TAPI_USSD_IND_OTHER_CLIENT;
+               break;
+       case CISS_USSD_NOT_SUPPORT:
+               *pTapiIndType = TAPI_USSD_IND_NOT_SUPPORT;
+               break;
+       case CISS_USSD_TIME_OUT:
+               *pTapiIndType = TAPI_USSD_IND_TIME_OUT;
+               break;
+       default:
+               DBG("\n [CISS-ENGINE] _ciss_get_tapi_ussd_ind_type:undefined =%d\n", ind_type);
+               break;
+       }
+       return TRUE;
+}
+
+int _ciss_get_telecomm_svc(TelSsTeleService_t in_teleservice, ciss_telecomm_svc_t *out_teleservice)
+{
+       switch (in_teleservice) {
+#ifdef _SHP_CPHS
+       case TAPI_SS_TS_ALL_SPEECH:
+               *out_teleservice = CISS_TELECOMM_SVC_VOICE;
+               break;
+       case TAPI_SS_TS_AUX_VOICE:
+                *out_teleservice = CISS_TELECOMM_SVC_AUX_VOICE:
+               break;
+#else
+       case TAPI_SS_TS_ALL_SPEECH:
+               *out_teleservice = CISS_TELECOMM_SVC_VOICE;
+               break;
+#endif
+
+       case TAPI_SS_TS_FACS:
+               *out_teleservice = CISS_TELECOMM_SVC_FAX;
+               break;
+       case TAPI_SS_TS_SMS:
+               *out_teleservice = CISS_TELECOMM_SVC_SMS;
+               break;
+       case TAPI_SS_BS_DATA_CIRCUIT_SYNC:
+               *out_teleservice = CISS_TELECOMM_SVC_ALL_CS_SYNC;
+               break;
+       case TAPI_SS_ALL_TELE_BEARER:
+       case TAPI_SS_TS_ALL_TELE_AND_BEARER_SERVICES:
+               *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE_BEARER;
+               break;
+       case TAPI_SS_TS_ALL_TELESERVICES:
+               *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE;
+               break;
+       case TAPI_SS_TS_ALL_DATA_TELESERVICES:
+               *out_teleservice = CISS_TELECOMM_SVC_ALL_DATA_TELE;
+               break;
+       case TAPI_SS_TS_ALL_TELESERVICES_EXCEPT_SMS:
+               *out_teleservice = CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS;
+               break;
+       case TAPI_SS_TS_ALL_PLMN_SPEC_TELE:
+               *out_teleservice = CISS_TELECOMM_SVC_PLMN_TELE_ALL;
+               break;
+       case TAPI_SS_BS_ALL_BEARER_SERVICES:
+               *out_teleservice = CISS_TELECOMM_SVC_ALL_BEARER;
+               break;
+       case TAPI_SS_BS_ALL_DATA_CDA:
+               *out_teleservice = CISS_TELECOMM_SVC_ALL_DATA_CDA;
+               break;
+       case TAPI_SS_BS_ALL_SYNCHRONOUS:
+               *out_teleservice = CISS_TELECOMM_SVC_ALL_SYNC;
+               break;
+       case TAPI_SS_BS_ALL_ASYNCHRONOUS:
+               *out_teleservice = CISS_TELECOMM_SVC_ALL_ASYNC;
+               break;
+       case TAPI_SS_BS_ALL_DATA_PADCA:
+               *out_teleservice = CISS_TELECOMM_SVC_ALL_DEDI_PAD;
+               break;
+       case TAPI_SS_BS_ALL_PLMN_SPEC_BS:
+               *out_teleservice = CISS_TELECOMM_SVC_PLMN_BEAR_ALL;
+               break;
+       case TAPI_SS_BS_DATA_CIRCUIT_ASYNC:
+               *out_teleservice = CISS_TELECOMM_SVC_ALL_CS_ASYNC;
+               break;
+       case TAPI_SS_BS_DATA_ALL_PDS:
+               *out_teleservice = CISS_TELECOMM_SVC_ALL_DEDI_PS;
+               break;
+       case TAPI_SS_TS_NONE:
+       default:
+               *out_teleservice = CISS_TELECOMM_SVC_NONE;
+               DBG("\n [CISS-ENGINE] _ciss_get_telecomm_svc: ERROR  Wrong  Bearer = %d  come. \n", in_teleservice);
+               break;
+       }
+       return TRUE;
+}
+
+int _ciss_get_forward_flavor_type(TelSsForwardWhen_t in_flavor, ciss_flavor_t *out_flavor)
+{
+       switch (in_flavor) {
+       case TAPI_SS_FORWARD_WHEN_UNCONDITIONAL_EV:
+               *out_flavor = CISS_FLAVOR_DIVERT_UNCONDITIONAL;
+               break;
+       case TAPI_SS_FORWARD_WHEN_BUSY_EV:
+               *out_flavor = CISS_FLAVOR_DIVERT_BUSY;
+               break;
+       case TAPI_SS_FORWARD_WHEN_NO_ANSWER_EV:
+               *out_flavor = CISS_FLAVOR_DIVERT_NOREPLY;
+               break;
+       case TAPI_SS_FORWARD_WHEN_NOT_REACHABLE_EV:
+               *out_flavor = CISS_FLAVOR_DIVERT_UNREACHABLE;
+               break;
+       case TAPI_SS_FORWARD_WHEN_ALL_CONDITIONAL_EV:
+               *out_flavor = CISS_FLAVOR_DIVERT_ALL_CONDITIONAL_FLAVORS;
+               break;
+       case TAPI_SS_FORWARD_WHEN_ALL_FORWARDING_EV:
+               *out_flavor = CISS_FLAVOR_DIVERT_ALL_FLAVORS;
+               break;
+       default:
+               *out_flavor = CISS_FLAVOR_NONE;
+               DBG("\n [CISS-ENGINE] _ciss_get_forward_flavor_type: ERROR  Wrong  Flavor = %d  come. \n", in_flavor);
+               break;
+       }
+       return TRUE;
+}
+
+int _ciss_get_barring_flavor_type(TelSsCallBarType_t in_flavor, ciss_flavor_t *out_flavor)
+{
+       switch (in_flavor) {
+       case TAPI_CALL_BARRING_ALL:
+               *out_flavor = CISS_FLAVOR_BARRING_ALL_FLAVORS;
+               break;
+       case TAPI_CALL_BARRING_ALL_OUTGOING_CALLS:
+               *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS;
+               break;
+       case TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL:
+               *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL;
+               break;
+       case TAPI_CALL_BARRING_ALL_OUTGOING_INTERN_CALL_EXCEPT:
+               *out_flavor = CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME;
+               break;
+       case TAPI_CALL_BARRING_ALL_INCOMING_CALLS:
+               *out_flavor = CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS;
+               break;
+       case TAPI_CALL_BARRING_ALL_INCOMING_CALLS_ROAMING:
+               *out_flavor = CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING;
+               break;
+       case TAPI_CALL_BARRING_OUTGOING:
+               *out_flavor = CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS;
+               break;
+       case TAPI_CALL_BARRING_INCOMING:
+               *out_flavor = CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS;
+               break;
+       default:
+               *out_flavor = CISS_FLAVOR_NONE;
+               DBG("\n [CISS-ENGINE] _ciss_get_barring_flavor_type: ERROR  Wrong  Flavor = %d  come. \n", in_flavor);
+               break;
+       }
+       return TRUE;
+}
+
+int _ciss_get_result_status_type(TelSsStatus_t in_status, ciss_status_t *out_status)
+{
+       switch (in_status) {
+       case TAPI_SS_STATUS_ACTIVE:
+               *out_status = CISS_STATUS_ACTIVE;
+               break;
+       case TAPI_SS_STATUS_REGISTERED:
+               *out_status = CISS_STATUS_REGISTERED;
+               break;
+       case TAPI_SS_STATUS_PROVISIONED:
+               *out_status = CISS_STATUS_PROVISIONED;
+               break;
+       case TAPI_SS_STATUS_QUIESCENT:
+               *out_status = CISS_STATUS_QUIESCENT;
+               break;
+       case TAPI_SS_STATUS_NOTHING:
+               *out_status = CISS_STATUS_NOTHING;
+               break;
+       default:
+               *out_status = CISS_STATUS_NOTHING;
+               DBG("\n [CISS-ENGINE] _ciss_get_result_status_type: ERROR  Wrong  TelSsStatus_t = %d  come. \n", in_status);
+               break;
+       }
+       return TRUE;
+}
+
+int _ciss_get_requested_tapi_ussd_ind_type(ciss_ussd_ind_type_t *ind_type, TelSsUssdIndType_t pTapiIndType)
+{
+       DBG("\n [CISS-ENGINE] _ciss_get_requested_tapi_ussd_ind_type:defined =%d\n", pTapiIndType);
+       switch (pTapiIndType) {
+       case TAPI_USSD_IND_NOTIFY:
+               *ind_type = CISS_USSD_NOTIFY;
+               break;
+       case TAPI_USSD_IND_NO_ACTION_REQUIRE:
+               *ind_type = CISS_USSD_IND_NO_ACTION_REQUIRE;
+               break;
+       case TAPI_USSD_IND_ACTION_REQUIRE:
+               *ind_type = CISS_USSD_IND_ACTION_REQUIRE;
+               break;
+       case TAPI_USSD_IND_TERMINATED_BY_NET:
+               *ind_type = CISS_USSD_TERMINATED_BY_NET;
+               break;
+       case TAPI_USSD_IND_OTHER_CLIENT:
+               *ind_type = CISS_USSD_OTHER_CLIENT;
+               break;
+       case TAPI_USSD_IND_NOT_SUPPORT:
+               *ind_type = CISS_USSD_NOT_SUPPORT;
+               break;
+       case TAPI_USSD_IND_TIME_OUT:
+               *ind_type = CISS_USSD_TIME_OUT;
+               break;
+       default:
+               DBG("\n [CISS-ENGINE] _ciss_get_requested_tapi_ussd_ind_type:undefined =%d\n", pTapiIndType);
+               break;
+       }
+       return TRUE;
+}
+
+void _ciss_ui_mmi_get_service_name(ciss_service_t in_service, char *service_name)
+{
+       switch (in_service) {
+       case CISS_SERVICE_DIVERTING:
+               strncpy(service_name, CISS_STR_CALL_DIVERTING, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_SERVICE_BARRING:
+               strncpy(service_name, CISS_STR_CALL_BARRING, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_SERVICE_WAITING:
+               strncpy(service_name, CISS_STR_CALL_WAITING, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_SERVICE_CHANGE_BARRING_PASSWD:
+               strncpy(service_name, CISS_STR_CHANGE_PASSWORD, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_SERVICE_USSD:
+               strncpy(service_name, CISS_STR_INFORMATION, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_SERVICE_IDENTIFICATION:
+       default:
+               strncpy(service_name, "", CISS_TEXT_LEN_MAX - 1);
+               break;
+       }
+       service_name[CISS_TEXT_LEN_MAX - 1] = '\0';
+}
+
+void _ciss_ui_mmi_get_flavor_name(ciss_flavor_t in_flavor, char *flavor_name)
+{
+       switch (in_flavor) {
+       case CISS_FLAVOR_DIVERT_UNCONDITIONAL:
+               strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_ALWAYS, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_DIVERT_BUSY:
+               strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_WHEN_BUSY, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_DIVERT_NOREPLY:
+               strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_WHEN_NOREPLY, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_DIVERT_UNREACHABLE:
+               strncpy(flavor_name, CISS_STR_CALL_DIVERTING_ACTIVE_C_UNREACHABLE, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_DIVERT_ALL_FLAVORS:
+               strncpy(flavor_name, CISS_STR_ALL_CALLS, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_DIVERT_ALL_CONDITIONAL_FLAVORS:
+               strncpy(flavor_name, CISS_STR_CONDITIONAL, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_BARRING_ALL_OUTGOING_CALLS:
+               strncpy(flavor_name, CISS_STR_ALL_OUTGOING_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_BARRING_ALL_OUTGOING_INTERNATIONAL:
+               strncpy(flavor_name, CISS_STR_OUTGOING_INTERNATIONAL_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_BARRING_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME:
+               strncpy(flavor_name, CISS_STR_OUTGOING_INTERNATIONAL_CALLS_EXCEPT_HOME_BARRED, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_BARRING_ALL_INCOMING_CALLS:
+               strncpy(flavor_name, CISS_STR_ALL_INCOMING_CALLS_BARRED, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_BARRING_INCOMING_CALLS_WHEN_ROAMING:
+               strncpy(flavor_name, CISS_STR_INCOMING_CALLS_BARRED_WHEN_ROAMING, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_BARRING_ALL_FLAVORS:
+               strncpy(flavor_name, CISS_STR_ALL_BARRING, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_BARRING_OUTGOING:
+               strncpy(flavor_name, CISS_STR_OUTGOING_BARRING, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_FLAVOR_BARRING_INCOMING:
+               strncpy(flavor_name, CISS_STR_INCOMING_BARRING, CISS_TEXT_LEN_MAX - 1);
+               break;
+       default:
+               strncpy(flavor_name, "", CISS_TEXT_LEN_MAX - 1);
+       }
+       flavor_name[CISS_TEXT_LEN_MAX - 1] = '\0';
+}
+
+void _ciss_ui_mmi_get_bearer_name(ciss_service_t ss_type, ciss_telecomm_svc_t in_teleservice, char *teleservice_name)
+{
+       DBG("\n [CISS-MMI] _ciss_ui_get_bearer_name: in_teleservice = %d  come. \n", in_teleservice);
+
+       switch (in_teleservice) {
+#ifdef _SHP_CPHS
+       case CISS_TELECOMM_SVC_VOICE:
+               if (PshCphsCheckCsp(PSH_CPHS_CSP_ALS))
+                       strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
+               else
+                       strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_PLMN_TELE_1:
+               strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
+               break;
+#else
+       case CISS_TELECOMM_SVC_VOICE:
+               strncpy(teleservice_name, CISS_STR_VOICE, CISS_TEXT_LEN_MAX - 1);
+               break;
+#endif
+       case CISS_TELECOMM_SVC_FAX:
+               strncpy(teleservice_name, CISS_STR_FAX, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_ALL_CS_SYNC:
+               strncpy(teleservice_name, CISS_STR_VIDEO, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_ALL_TELE_BEARER:
+               strncpy(teleservice_name, CISS_STR_ALL_SERVICES, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_ALL_TELE:
+               strncpy(teleservice_name, CISS_STR_ALL_TELECOM_SERVICES, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_ALL_DATA_TELE:
+               strncpy(teleservice_name, CISS_STR_ALL_DATA_SERVICES, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_ALL_TELE_EXPT_SMS:
+               strncpy(teleservice_name, CISS_STR_FOR_ALL_TELE_SERVICES_EXCEPT_SMS, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_PLMN_TELE_ALL:
+               strncpy(teleservice_name, CISS_STR_ALL_PLMN_BEARERS, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_ALL_BEARER:
+               strncpy(teleservice_name, CISS_STR_ALL_BEARER_SERVICES, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_ALL_DATA_CDA:
+               strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_ALL_SYNC:
+               strncpy(teleservice_name, CISS_STR_ALL_SYNCHRONOUS_SERVICES, CISS_TEXT_LEN_MAX - 1);
+               break;
+#ifdef _SHP_OPERATOR_VODAFONE
+       case CISS_TELECOMM_SVC_ALL_ASYNC:
+               strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
+               break;
+#else
+       case CISS_TELECOMM_SVC_ALL_ASYNC:
+               strncpy(teleservice_name, CISS_STR_ALL_ASYNCHRONOUS_DATA, CISS_TEXT_LEN_MAX - 1);
+               break;
+#endif
+       case CISS_TELECOMM_SVC_ALL_DEDI_PAD:
+               strncpy(teleservice_name, CISS_STR_ALL_PADCA_SERVICES, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_PLMN_BEAR_ALL:
+               strncpy(teleservice_name, CISS_STR_ALL_PLMN_BEARERS, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_SMS:
+               strncpy(teleservice_name, CISS_STR_SMS, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_ALL_CS_ASYNC:
+               strncpy(teleservice_name, CISS_STR_ASYNCHRONOUS_DATA_SERVICES, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_ALL_DEDI_PS:
+               strncpy(teleservice_name, CISS_STR_ALL_PDS_SERVICES, CISS_TEXT_LEN_MAX - 1);
+               break;
+       case CISS_TELECOMM_SVC_NONE:
+       default:
+               DBG("\n [CISS-MMI] _ciss_ui_get_bearer_name: ERROR  Wrong  Bearer = %d  come. \n", in_teleservice);
+               if ((ss_type == CISS_SERVICE_WAITING) ||
+                   (ss_type == CISS_SERVICE_IDENTIFICATION))
+                       strncpy(teleservice_name, "", CISS_TEXT_LEN_MAX - 1);
+               else
+                       strncpy(teleservice_name, CISS_STR_ALL_SERVICES, CISS_TEXT_LEN_MAX - 1);
+       }
+       teleservice_name[CISS_TEXT_LEN_MAX - 1] = '\0';
+}
+
+void _ciss_ui_mmi_get_result_status_type(ciss_service_t ss_type, ciss_status_t result_status, char *szResult)
+{
+       if (ss_type == CISS_SERVICE_DIVERTING) {
+               switch (result_status) {
+               case CISS_STATUS_ACTIVE:
+                       strncpy(szResult, CISS_STR_ACTIVATED, CISS_TEXT_LEN_MAX - 1);
+                       break;
+
+               case CISS_STATUS_REGISTERED:
+               case CISS_STATUS_PROVISIONED:
+               case CISS_STATUS_QUIESCENT:
+               case CISS_STATUS_NOTHING:
+               default:
+                       strncpy(szResult, CISS_STR_DEACTIVATED, CISS_TEXT_LEN_MAX - 1);
+                       break;
+               }
+       } else {
+               /* Wating or Barring case only have Act / Deact status */
+               switch (result_status) {
+               case CISS_STATUS_ACTIVE:
+               case CISS_STATUS_REGISTERED:
+                       strncpy(szResult, CISS_STR_ACTIVATED, CISS_TEXT_LEN_MAX - 1);
+                       break;
+
+               case CISS_STATUS_PROVISIONED:
+               case CISS_STATUS_QUIESCENT:
+               case CISS_STATUS_NOTHING:
+               default:
+                       strncpy(szResult, CISS_STR_DEACTIVATED, CISS_TEXT_LEN_MAX - 1);
+                       break;
+               }
+       }
+       szResult[CISS_TEXT_LEN_MAX - 1] = '\0';
+}
+
+
diff --git a/src/ciss-main.c b/src/ciss-main.c
new file mode 100755 (executable)
index 0000000..9a293c9
--- /dev/null
@@ -0,0 +1,237 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include <stdio.h>
+#include <TapiCommon.h>
+#include <appcore-efl.h>
+#include <aul.h>
+#include <glib-2.0/glib.h>
+#include <Ecore.h>
+
+#include "ciss-common.h"
+#include "ciss-util.h"
+#include "ciss-ussd.h"
+#include "ciss-resp.h"
+#include "ciss-tapi-request.h"
+#include "ciss-parser.h"
+#include "ciss-widget.h"
+
+static int __ciss_relaunch_handler(bundle *b, void *data)
+{
+       DBG("Enter");
+
+       int event_type = 0;
+       int event_status = 0;
+       int encoded_data_length;
+
+       struct appdata *ad = (struct appdata *)data;
+       Evas_Object *popup;
+       char *tmp;
+
+       tmp = (char *)bundle_get_val(b, "CISS_LAUNCHING_MODE");
+
+       if (strcmp(tmp, "REQ") == 0) {
+               tmp = (char *)bundle_get_val(b, "CISS_REQ_STRING");
+               retv_if(tmp == NULL, -1);
+               DBG("CISS_REQ_STRING=%s",tmp);
+               strncpy(ad->req_string, tmp, REQ_STRING_MAX_LEN - 1);
+               ciss_err_t ciss_err_code;
+
+               if (ad->win_main == NULL) {
+                       Evas_Object *win;
+                       win = _ciss_create_win(PACKAGE);
+                       retv_if(win == NULL, -1);
+                       ad->win_main = win;
+                       evas_object_show(win);
+                       ad->end_key_event_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _ciss_on_end_key_down, NULL);
+               }
+
+               if (ad->popup != NULL)  {
+                       evas_object_del(ad->popup);
+                       ad->popup = NULL;
+               }
+
+               DBG("scale = %f", elm_config_scale_get());
+
+               popup = _ciss_create_noti_popup(ad->win_main, CISS_STR_REQUESTING, NULL, 30.0, ad);
+
+               ad->popup = popup;
+
+               ciss_mmi_context_t      mmi_ctx;
+
+               ciss_err_code = _ciss_parse_req_string(tmp, &mmi_ctx);
+
+               if (ciss_err_code != CISS_ERR_NONE)
+                       _ciss_create_error_popup(ad->win_main, ciss_err_code, 2.0, ad);
+               else {
+                       ciss_err_code = _ciss_send_tapi_request(&mmi_ctx);
+                       DBG("ciss_err_code(_ciss_send_tapi_request) = %d", ciss_err_code);
+                       if (ciss_err_code != CISS_ERR_NONE)
+                               _ciss_create_error_popup(ad->win_main, ciss_err_code, 2.0, ad);
+               }
+       } else if (strcmp(tmp, "RESP")== 0) {
+               tmp = (char *)bundle_get_val(b, "KEY_EVENT_TYPE");
+               event_type = atoi(tmp);
+               ad->cmd_type = event_type;
+
+               tmp = (char *)bundle_get_val(b, "KEY_STATUS");
+               event_status = atoi(tmp);
+
+               tmp = (char *)bundle_get_val(b, "KEY_ENCODED_DATA_LENGTH");
+               encoded_data_length = atoi(tmp);
+
+               tmp = (char *)bundle_get_val(b, "KEY_ENCODED_DATA");
+
+               gchar *decoded_data;
+               gsize decoded_data_length;
+
+               decoded_data = (gchar *)g_base64_decode((gchar *)tmp,&decoded_data_length);
+               DBG("Received Event=0x%x", event_type);
+               DBG("encoded_data_len = %d decoded_data_len = %d", encoded_data_length,decoded_data_length);
+
+               TelTapiEvent_t event;
+               event.EventType = event_type;
+               event.pData= decoded_data;
+               event.pDataLen = decoded_data_length;
+               event.Status = event_status;
+
+               switch (event_type) {
+               case TAPI_EVENT_SS_USSD_IND:
+               case TAPI_EVENT_SS_USSD_CNF:
+               case TAPI_EVENT_SS_USSD_RSP_CNF:
+               case TAPI_EVENT_SS_USSD_CANCEL_CNF:
+                       _ciss_on_tapi_ussd_event(&event, ad);
+                       break;
+               case TAPI_EVENT_SAT_SEND_SS_IND:
+                       _ciss_on_tapi_sat_ss_event(&event, ad);
+                       break;
+               case TAPI_EVENT_SAT_SEND_USSD_IND:
+                       _ciss_on_tapi_sat_ussd_event(&event, ad);
+                       break;
+               case TAPI_EVENT_SS_FORWARD_CNF:
+               case TAPI_EVENT_SS_FORWARD_QUERYSTATUS_CNF:
+               case TAPI_EVENT_SS_BARRING_CNF:
+               case TAPI_EVENT_SS_BARRING_QUERYSTATUS_CNF:
+               case TAPI_EVENT_SS_BARRING_CHANGEPASS_CNF:
+               case TAPI_EVENT_SS_WAITING_CNF:
+               case TAPI_EVENT_SS_WAITING_QUERYSTATUS_CNF:
+               case TAPI_EVENT_SS_CLI_QUERYSTATUS_CNF:
+                       _ciss_on_tapi_ss_event(&event, ad);
+                       break;
+               default:
+               return -1;
+               }
+       } else {
+               ERR("wrong exec type");
+               return -1;
+       }
+
+       DBG("Leave");
+       return 0;
+}
+
+static int __ciss_app_create(void *data)
+{
+       DBG("Enter");
+
+       struct appdata *ad = (struct appdata *)data;
+       _ciss_tapi_event_setup(ad);
+       ad->win_main = NULL;
+       ad->layout_main = NULL;
+       ad->bg = NULL;
+       ad->popup = NULL;
+       ad->end_key_event_handler = NULL;
+       ad->is_sat_request = EINA_FALSE;
+       _ciss_geinlist_item_class_new(ad);
+
+       return 0;
+}
+
+static int __ciss_app_terminate(void *data)
+{
+       DBG("Enter");
+
+       struct appdata *ad = data;
+
+       _ciss_geinlist_item_class_free(ad);
+       if (ad->win_main) {
+               evas_object_del(ad->win_main);
+               if (ad->end_key_event_handler)
+                       ecore_event_handler_del(ad->end_key_event_handler);
+       }
+
+       if (ad->bg) {
+               evas_object_del(ad->bg);
+               ad->bg = NULL;
+       }
+
+       _ciss_deregister_tel_event();
+       DBG("Leave");
+
+       return 0;
+}
+
+static int __ciss_app_pause(void *data)
+{
+       elm_exit();
+       return 0;
+}
+
+static int __ciss_app_resume(void *data)
+{
+       return 0;
+}
+
+static int __ciss_app_reset(bundle *b, void *data)
+{
+       DBG("Enter");
+
+       struct appdata *ad = data;
+
+       if (ad->win_main)
+               elm_win_activate(ad->win_main);
+
+       __ciss_relaunch_handler(b, data);
+       DBG("Leave");
+       return 0;
+}
+
+int main(int argc, char *argv[])
+{
+       DBG("Enter");
+
+       struct appdata ad;
+
+       struct appcore_ops ops = {
+               .create = __ciss_app_create,
+               .terminate = __ciss_app_terminate,
+               .pause = __ciss_app_pause,
+               .resume =__ciss_app_resume,
+               .reset = __ciss_app_reset,
+       };
+
+       appcore_set_i18n(PACKAGE, LOCALEDIR);
+
+       memset(&ad, 0x0, sizeof(struct appdata));
+
+       ops.data = &ad;
+
+       return appcore_efl_main(PACKAGE, &argc, &argv, &ops);
+}
+
diff --git a/src/ciss-parser.c b/src/ciss-parser.c
new file mode 100755 (executable)
index 0000000..dc9bbc3
--- /dev/null
@@ -0,0 +1,408 @@
+/*\r
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved \r
+ *\r
+ * This file is part of <ciss>\r
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>\r
+ *\r
+ * PROPRIETARY/CONFIDENTIAL\r
+ *\r
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").\r
+ * You shall not disclose such Confidential Information and shall use it only in accordance\r
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.\r
+ * SAMSUNG make no representations or warranties about the suitability of the software,\r
+ * either express or implied, including but not limited to the implied warranties of merchantability,\r
+ * fitness for a particular purpose, or non-infringement.\r
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,\r
+ * modifying or distributing this software or its derivatives.\r
+ *\r
+ */\r
+\r
+#include "ciss-util.h"\r
+#include "ciss-tapi-request.h"\r
+#include "ciss-parser.h"\r
+#include "ciss-converter.h"\r
+\r
+static int __ciss_find_si_fields(char *user_input, char *sc, char *sia, char *sib, char *sic)\r
+{\r
+       char  *input;\r
+       int sia_offset = 0;\r
+       int sib_offset = 0;\r
+       int sic_offset = 0;\r
+       int sia_len = 0;\r
+       int sib_len = 0;\r
+       int sic_len = 0;\r
+       int sc_len = 0;\r
+\r
+       /*\r
+       123*456*789*012#\r
+       |    |   |   |\r
+       sc  sia sib  sic\r
+       */\r
+       input = user_input;\r
+       sc_len = strspn(input, "0123456789");\r
+       DBG("\n [CISS-ENGINE] sc_len : %d", sc_len);\r
+       if (sc_len > MAX_SC_LEN)\r
+               return false;\r
+       else {\r
+               memcpy(sc, input, sc_len);\r
+               sc[sc_len] = '\0';\r
+       }\r
+\r
+       if (input[sc_len] == '*') {\r
+               /* check if there is an SIA field */\r
+               sia_offset = sc_len + 1;\r
+               sia_len = strspn((input + sia_offset), "+1234567890");\r
+               /* check if there is an SIB field */\r
+               if (input[sia_offset + sia_len] == '*') {\r
+                       sib_offset = sia_offset + sia_len + 1;\r
+                       sib_len = strspn (input + sib_offset, "+1234567890");\r
+                       /* check if there is an SIC field */\r
+                       if (input[sib_offset + sib_len] == '*') {\r
+                               sic_offset = sib_offset + sib_len + 1;\r
+                               sic_len = strspn(input + sic_offset, "+1234567890");\r
+                       }\r
+               }\r
+       }\r
+\r
+       if ((sia_len > 0) && (sia_len <= MAX_SIA_LEN)) {\r
+               memcpy(sia, input + sia_offset, sia_len);\r
+               sia[sia_len] = '\0';\r
+       }\r
+\r
+       if ((sib_len > 0) && (sib_len <= MAX_SIB_LEN)) {\r
+               memcpy(sib, input + sib_offset, sib_len);\r
+               sib[sib_len] = '\0';\r
+       }\r
+\r
+       if ((sic_len > 0) && (sic_len <= MAX_SIC_LEN)) {\r
+               memcpy(sic, input + sic_offset, sic_len);\r
+               sic[sic_len] = '\0';\r
+       }\r
+\r
+       /* NOTE: A NULL value for the SIA, SIB and SIC are\r
+              also valid and so return TRUE\r
+       */\r
+       if ((sib_len > MAX_SIB_LEN) ||\r
+           (sia_len > MAX_SIA_LEN) ||\r
+           (sic_len > MAX_SIC_LEN))\r
+               return false;\r
+    return TRUE;\r
+}\r
+\r
+static unsigned char __ciss_parse_req_string(ciss_mmi_context_t *mmi_ctx, int *error_code)\r
+{\r
+       char   sups_str[MAX_DIALED_DIGITS];\r
+       char   *user_sc = NULL;\r
+       char   bsg[MAX_SIA_LEN + 1];\r
+       unsigned char   ss_str_len;\r
+       unsigned char   ss_operation;\r
+       unsigned char   tapi_flavor = 0;\r
+       unsigned char     ss_type = 0xff;\r
+       TelSsTeleService_t tapi_bsg;\r
+       char sia[MAX_SIA_LEN + 1];\r
+       char sib[MAX_SIB_LEN + 1];\r
+       char sic[MAX_SIC_LEN + 1];\r
+       char ss_code[MAX_SC_LEN + 1];\r
+\r
+       ss_operation = NULL_SS_OPERATION;\r
+       memset(sia, '\0', sizeof(sia));\r
+       memset(sib, '\0', sizeof(sib));\r
+       memset(sic, '\0', sizeof(sic));\r
+       memset(ss_code, '\0', sizeof(ss_code));\r
+       memset(bsg, '\0', sizeof(bsg));\r
+       memset(sups_str, '\0', MAX_DIALED_DIGITS);\r
+\r
+       /* user inputs must be in the g_form\r
+       ** "**123*456*789*012#SEND"\r
+       **  |  |   |   |   |  |\r
+       **  |  |   |   |   |  |------>send key\r
+       **  |  |   |   |   |--------->sic\r
+       **  |  |   |   |------------->sib\r
+       **  |  |   |----------------->sia\r
+       **  |  |--------------------->sc\r
+       **  |------------------------>operation\r
+       */\r
+\r
+       /* STEP 1: Find the SS operation */\r
+       memcpy(sups_str, mmi_ctx->user_string, mmi_ctx->user_string_length);\r
+       /* get the length of the user input */\r
+       ss_str_len = mmi_ctx->user_string_length;\r
+       /* special case */\r
+       /* this may be a nomal call origination with CLIR\r
+       */\r
+       if (((memcmp(sups_str, "*31#", 4) == 0) ||\r
+           (memcmp(sups_str, "#31#", 4) == 0)) &&\r
+           (sups_str[ss_str_len - 1] != '#'))\r
+               return NULL_SS_OPERATION;\r
+\r
+       /* check the first character */\r
+       if (sups_str[0] == '*') {\r
+               /* possible combinations are\r
+                 *41*  - activation\r
+                 *03*  - pwd registration\r
+                 **41* - registration\r
+                 **03* - pwd registration\r
+                 *#41* - interrogation\r
+               */\r
+               if (ISDIGIT(sups_str [1])) {\r
+               /* next char is a digit, can be activation or pwd_reg */\r
+                       if (!strncmp(sups_str, "*03*", strlen("*03*"))) {\r
+                               DBG("\n [CISS-ENGINE] registerPassword");\r
+                               ss_operation = registerPassword;\r
+                               user_sc = sups_str + 4;\r
+                       } else {\r
+                               DBG("\n [CISS-ENGINE] activateSS");\r
+                               ss_operation = activateSS;  /* eg: *41* for Activation */\r
+                               user_sc = sups_str + 1;\r
+                       }\r
+               } else if ((sups_str[1] == '#') && ISDIGIT(sups_str[2])) {\r
+                       /* now the combination is *#41 */\r
+                       DBG("\n [CISS-ENGINE] interrogateSS");\r
+                       ss_operation = interrogateSS;\r
+                       user_sc = sups_str + 2;\r
+               } else if (sups_str[1] == '*') {\r
+                       /* possible combinations are\r
+                       **41* - registration\r
+                       **03* - pwd registration\r
+                       */\r
+                       if (ISDIGIT(sups_str[2])) {\r
+                               if (!strncmp(sups_str, "**03*", strlen("**03*"))) {\r
+                                       DBG("\n [CISS-ENGINE] registerPassword");\r
+                                       ss_operation = registerPassword;\r
+                                       user_sc = sups_str + 5;\r
+                               } else {\r
+                                       DBG("\n [CISS-ENGINE] registerSS");\r
+                                       ss_operation = registerSS;\r
+                                       user_sc = sups_str + 2;\r
+                               }\r
+                       }\r
+               }\r
+       } else if (sups_str[0] == '#') {\r
+               /* possible combinations are\r
+                  ##41* - erasure\r
+                  #41* - deactivation\r
+               */\r
+               if (ISDIGIT(sups_str[1])) {\r
+                       DBG("\n [CISS-ENGINE] deactivateSS");\r
+                       ss_operation = deactivateSS;\r
+                       user_sc = sups_str + 1;\r
+               } else if ((sups_str[1] == '#') && (ISDIGIT(sups_str[2]))) {\r
+               /*  Additional added a check to verify whether third character in USSD String is a digit or not.\r
+                   If 3rd Character is not a digit then should send USSD Request not Erase SS Operation\r
+               */\r
+                       DBG("\n [CISS-ENGINE] eraseSS");\r
+                       ss_operation = eraseSS;\r
+                       user_sc = sups_str + 2;\r
+               }\r
+       } else if ((ss_str_len == 2) && (ISUSSDDIGIT(sups_str[0]) && ISDIGIT(sups_str[1]))) {\r
+               DBG("\n [CISS-ENGINE] processUnstructuredSS_Request");\r
+               ss_operation = processUnstructuredSS_Request;\r
+               return ss_operation;\r
+       } else if ((ss_str_len == 1) && (ISDIGIT(sups_str[0]))) {\r
+               DBG("\n [CISS-ENGINE] processUnstructuredSS_Request");\r
+               ss_operation = processUnstructuredSS_Request;\r
+               return ss_operation;\r
+       }\r
+\r
+       if (ss_operation != NULL_SS_OPERATION) {\r
+               /* By now the operation must have been identified */\r
+               /* STEP 2: Find the SI fields */\r
+               if (!__ciss_find_si_fields(user_sc, ss_code, sia, sib, sic)) {\r
+                       /*Added code for UI display for password too long for call barring */\r
+                       /* Since SIB,SIC field length is 4 */\r
+                       if (strlen(ss_code)!= 0) {\r
+                               if (!_ciss_convert_sc_to_tapi_flavor(ss_code, &tapi_flavor, &ss_type)) {\r
+                                       ss_operation = NULL_SS_OPERATION;\r
+                               } else if (ss_type == TAPI_SS_TYPE_BARRING) {\r
+                                       DBG("\n [CISS-ENGINE] Too long password");\r
+                                       ss_operation = NULL_SS_OPERATION;\r
+                                       *error_code = CISS_ERR_CB_PWD_TOO_LONG;\r
+                                       return ss_operation;\r
+                               }\r
+                       }\r
+                       /* End of password too long added code */\r
+                       ss_operation = NULL_SS_OPERATION;\r
+               }\r
+\r
+               DBG("\n [CISS-ENGINE] sia = %s, sib = %s, sic = %s", sia, sib, sic);\r
+       }\r
+       /* added for FDN check */\r
+       strncpy(mmi_ctx->ss_code, ss_code, MAX_SC_LEN);\r
+       /* by now SIA, SIB, SIC fields must have been separated out */\r
+       /* STEP 3: Convert SC to network SC and update the\r
+                sups_user_data field\r
+       */\r
+       if ((ss_operation != registerPassword) &&\r
+           (ss_operation != NULL_SS_OPERATION)) {\r
+               if (!_ciss_convert_sc_to_tapi_flavor(ss_code, &tapi_flavor, &ss_type))\r
+                       ss_operation = NULL_SS_OPERATION;\r
+               else {\r
+                       mmi_ctx->ss_flavor = tapi_flavor;\r
+                       mmi_ctx->ss_type = ss_type;\r
+               }\r
+       }\r
+       /* by now the translation of SC must be complete */\r
+       /* STEP 4: Check for BSG . This may be in SIA, SIB or SIC */\r
+       if (ss_operation != NULL_SS_OPERATION) {\r
+               if ((ss_operation != registerPassword)&&\r
+                   ((ss_type == TAPI_SS_TYPE_FORWARDING)||\r
+                   (ss_type == TAPI_SS_TYPE_BARRING))) {\r
+                       /* BSG is in SIB */\r
+                       if (ss_operation == interrogateSS)\r
+                               strncpy(bsg, sia, MAX_SIA_LEN);\r
+                       else\r
+                               strncpy(bsg, sib, MAX_SIB_LEN);\r
+               } else if (ss_type == TAPI_SS_TYPE_WAITING) {\r
+               /* MSN:SISO changed for the validation of the #43**11# kind of strings */\r
+                       if ((sib[0] !=0) || (sic[0] != 0))\r
+                               ss_operation = NULL_SS_OPERATION;\r
+                       else\r
+                               /* BSG is in  SIA */\r
+                               strncpy(bsg, sia, MAX_SIA_LEN);\r
+               } else\r
+                       bsg[0] = '\0';\r
+\r
+               /* by now BSG must be identified */\r
+               /* STEP 5: Convert BSG to net BSG */\r
+               /* validation of the #43**11# kind of strings */\r
+               if ((ss_operation != registerPassword) &&\r
+                   (ss_operation != NULL_SS_OPERATION)) {\r
+                       /* special case */\r
+                       if (_ciss_convert_bsg_to_tapi_bsg(bsg, &tapi_bsg))\r
+                               mmi_ctx->tapi_bsg = tapi_bsg;\r
+                       else\r
+                               ss_operation = NULL_SS_OPERATION;\r
+               }\r
+       }\r
+\r
+       /* STEP 6:  Convert DN(divert number), if any */\r
+       if (ss_operation != NULL_SS_OPERATION) {\r
+               if (ss_type == TAPI_SS_TYPE_FORWARDING) {\r
+                       if (sia[0] != '\0') {\r
+                               strncpy(mmi_ctx->divert_number, sia, strlen(sia));\r
+                               mmi_ctx->divert_number[strlen(sia)] = '\0';\r
+                       }\r
+                       /* else the length of the DN will be 0 */\r
+               }\r
+       }\r
+\r
+       /* STEP 7: Set the NR(no reply) timer */\r
+       if (((ss_operation == activateSS) || (ss_operation == registerSS)) &&\r
+           (ss_type == TAPI_SS_TYPE_FORWARDING) &&\r
+           ((tapi_flavor == TAPI_SS_FORWARD_WHEN_ALL_FORWARDING_EV) ||\r
+           (tapi_flavor == TAPI_SS_FORWARD_WHEN_ALL_CONDITIONAL_EV) ||\r
+           (tapi_flavor == TAPI_SS_FORWARD_WHEN_NO_ANSWER_EV))) {\r
+               if (sic[0] != '\0')\r
+                       mmi_ctx->nr_timer = atoi(sic);\r
+               else\r
+                       mmi_ctx->nr_timer = 0;\r
+       }\r
+\r
+       /* STEP 8: Check is activation is also registration? */\r
+       if (ss_operation == activateSS) {\r
+               if (mmi_ctx->divert_number[0] > 0)\r
+                       ss_operation = registerSS;\r
+               else if (mmi_ctx->nr_timer != 0)\r
+                       ss_operation = registerSS;\r
+       }\r
+\r
+       /* STEP 9: copy the password */\r
+       /* for barring operations other than register*/\r
+       if (ss_operation != NULL_SS_OPERATION) {\r
+               /*Added code for UI display for password too long for call barring */\r
+               /* Since SIA feild length is 40 */\r
+               if ((ss_type == TAPI_SS_TYPE_BARRING) ||\r
+                   (ss_operation == registerPassword)) {\r
+                       if (strlen(sia) > 4) {\r
+                               DBG("\n [CISS-ENGINE] Too long password");\r
+                               ss_operation = NULL_SS_OPERATION;\r
+                               *error_code = CISS_ERR_CB_PWD_TOO_LONG;\r
+                               return ss_operation;\r
+                       }\r
+               }\r
+\r
+               /* End of password too long added code */\r
+               if ((ss_type == TAPI_SS_TYPE_BARRING) &&\r
+                   (ss_operation != registerPassword)) {\r
+                       if (ss_operation != interrogateSS) {\r
+                               if (strlen(sia) < 4) {\r
+                                       DBG("\n [CISS-ENGINE] Pwd Too Short : %d",strlen(sia));\r
+                                       ss_operation = NULL_SS_OPERATION;\r
+                                       *error_code = CISS_ERR_CB_PWD_TOO_SORT;\r
+                                       return ss_operation;\r
+                               } else if (strlen(sia) > 4) {\r
+                                       DBG("\n [CISS-ENGINE] Pwd Too long : %d",strlen(sia));\r
+                                       ss_operation = NULL_SS_OPERATION;\r
+                                       *error_code = CISS_ERR_CB_PWD_TOO_LONG;\r
+                                       return ss_operation;\r
+                               } else {\r
+                                       strncpy(mmi_ctx->ss_password, sia, CISS_MAX_PASSWORD_LEN);\r
+                                       mmi_ctx->ss_password[CISS_MAX_PASSWORD_LEN] = '\0';\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+       /* copy old_pwd, new_pwd, new_pwd_again */\r
+       if (ss_operation == registerPassword) {\r
+               if ((strlen(sia) != 4) ||\r
+                   (strlen(sib) != 4) ||\r
+                   (strlen(sic) != 4)) {\r
+                       DBG("\n [CISS-ENGINE] Pwd Length Incorrect : %d %d %d", strlen(sia), strlen(sib), strlen(sic));\r
+                       memset(mmi_ctx->ss_password, '\0', CISS_MAX_PASSWORD_LEN + 1);\r
+                       memset(mmi_ctx->ss_new_password, '\0', CISS_MAX_PASSWORD_LEN + 1);\r
+                       memset(mmi_ctx->ss_new_password2, '\0', CISS_MAX_PASSWORD_LEN + 1);\r
+                       strncpy(mmi_ctx->ss_password,sia, CISS_MAX_PASSWORD_LEN);\r
+                       strncpy(mmi_ctx->ss_new_password,sib, CISS_MAX_PASSWORD_LEN);\r
+                       strncpy(mmi_ctx->ss_new_password2,sic, CISS_MAX_PASSWORD_LEN);\r
+               } else {\r
+                       memset(mmi_ctx->ss_password, '\0', CISS_MAX_PASSWORD_LEN + 1);\r
+                       memset(mmi_ctx->ss_new_password, '\0', CISS_MAX_PASSWORD_LEN + 1);\r
+                       memset(mmi_ctx->ss_new_password2, '\0', CISS_MAX_PASSWORD_LEN + 1);\r
+                       strncpy(mmi_ctx->ss_password,sia, CISS_MAX_PASSWORD_LEN);\r
+                       strncpy(mmi_ctx->ss_new_password,sib, CISS_MAX_PASSWORD_LEN);\r
+                       strncpy(mmi_ctx->ss_new_password2,sic, CISS_MAX_PASSWORD_LEN);\r
+               }\r
+       }\r
+\r
+       if (ss_operation == NULL_SS_OPERATION) {\r
+       /* check if it is an Unstructured SS data */\r
+               if ((ss_str_len <= MAX_USS_CHAR) &&\r
+                   (ss_str_len > 2) &&\r
+                   (sups_str[ss_str_len - 1] == '#'))\r
+                       ss_operation = processUnstructuredSS_Request;\r
+       }\r
+       return (ss_operation);\r
+}\r
+\r
+int _ciss_parse_req_string(char *pszSS, ciss_mmi_context_t *mmi_ctx)\r
+{\r
+       DBG("Enter");\r
+       memset(mmi_ctx, 0x0, sizeof(ciss_mmi_context_t));\r
+       DBG("\n [CISS-ENGINE] received string = %s", pszSS);\r
+       mmi_ctx->user_string_length = strlen(pszSS);\r
+       if (mmi_ctx->user_string_length > 0)\r
+               memcpy(mmi_ctx->user_string, pszSS, mmi_ctx->user_string_length);\r
+       else {\r
+               DBG("\n [CISS-ENGINE] User String Length should be non-zero");\r
+               return CISS_ERR_UNKNOWN;\r
+       }\r
+\r
+       int error_code = CISS_ERR_NONE;\r
+       mmi_ctx->opcode = __ciss_parse_req_string(mmi_ctx, &error_code);\r
+       DBG("\n [CISS-ENGINE] Parsed opcode = %d", mmi_ctx->opcode);\r
+       DBG("\n [CISS-ENGINE] Parsed SSCode = %x", mmi_ctx->ss_flavor);\r
+       DBG("\n [CISS-ENGINE] Parsed SStype = %x", mmi_ctx->ss_type);\r
+       DBG("\n [CISS-ENGINE] Parsed BS Code = %x  ", mmi_ctx->tapi_bsg);\r
+       DBG("\n [CISS-ENGINE] Parsed NR Timer = %d", mmi_ctx->nr_timer);\r
+       DBG("\n [CISS-ENGINE] Parsed Divert no = %s", mmi_ctx->divert_number);\r
+       DBG("\n [CISS-ENGINE] Parsed SS Pwd = %s", mmi_ctx->ss_password);\r
+       DBG("\n [CISS-ENGINE] Parsed SS New Pwd = %s", mmi_ctx->ss_new_password);\r
+       DBG("\n [CISS-ENGINE] Parsed SS New Pwd cnf = %s", mmi_ctx->ss_new_password2);\r
+       if ((mmi_ctx->opcode == NULL_SS_OPERATION) &&\r
+           (error_code == CISS_ERR_NONE))\r
+               error_code = CISS_ERR_ILLEGAL_SS_OPER;\r
+\r
+       return error_code;\r
+}\r
+\r
diff --git a/src/ciss-resp.c b/src/ciss-resp.c
new file mode 100755 (executable)
index 0000000..9b0d554
--- /dev/null
@@ -0,0 +1,571 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include "ciss-common.h"
+#include "ciss-widget.h"
+#include "ciss-resp.h"
+#include "ciss-tapi-request.h"
+#include "ciss-converter.h"
+#include "ciss-util.h"
+#include <TapiEvent.h>
+
+static char resultstring[CISS_MAX_SS_RECORDS][CISS_USSD_DATA_SIZE_MAX];
+
+static void __ciss_create_forward_result_string(ciss_result_t *ciss_result, TelSsInfo_t *ss_info)
+{
+       int i;
+       DBG("\n [CISS-ENGINE] __ciss_create_forward_result_string: num of param=%d\n", ss_info->NumberOfRecords);
+       /* Check Network result & Setting Proper result string to display */
+       /*  Set Supplement service type string */
+       ciss_result->szSsType = CISS_SERVICE_DIVERTING;
+       ciss_result->nRecordNum = ss_info->NumberOfRecords;
+       /* Request from MMI string */
+
+       /* No SS Result received case.. */
+       if (ss_info->NumberOfRecords <= 0) {
+               DBG("\n [CISS-ENGINE] __ciss_create_forward_result_string: (ME) parameter num=0!\n");
+               /* Set Display string : Default telecommSvc, Flavor, Result */
+               ciss_result->nRecordNum = 0;
+               _ciss_get_telecomm_svc(TAPI_SS_TS_NONE, &ciss_result->szBearer[0]);
+               _ciss_get_result_status_type(TAPI_SS_STATUS_PROVISIONED, &ciss_result->szResult[0]);
+               ciss_result->szFlavor = CISS_FLAVOR_NONE;
+       } else {
+               /* Single or Multiple result received case..
+               In case of all CF and all conditional CF, tapi always sends a no reply flavor.
+               So we have to get the flavor with requested data that is saved in ss_result_string structure. */
+
+               /* Set Display string :  Network result value */
+               for (i = 0; i < ss_info->NumberOfRecords; i++) {
+                       _ciss_get_telecomm_svc(ss_info->SsRecord.ForwardingRecord.rec_class[i].TeleCommService, &ciss_result->szBearer[i]);
+                       _ciss_get_result_status_type(ss_info->SsRecord.ForwardingRecord.rec_class[i].Status, &ciss_result->szResult[i]);
+
+                       if ((ss_info->SsRecord.ForwardingRecord.rec_class[0].ForwardCondition == TAPI_SS_FORWARD_WHEN_NO_ANSWER_EV) &&
+                           (ss_info->SsRecord.ForwardingRecord.rec_class[i].NoReplyWaitTime != 0)) {
+                               ciss_result->nDivertWaitingTime[i] = ss_info->SsRecord.ForwardingRecord.rec_class[i].NoReplyWaitTime;
+                               DBG("\n [CISS-ENGINE] __ciss_create_forward_result_string(Multiple %dth): No reply time=%d\n",
+                                       i, ciss_result->nDivertWaitingTime[i]);
+                       }
+                       DBG("\n [CISS-ENGINE] #########forwarding number = %s########\n\n",
+                               ss_info->SsRecord.ForwardingRecord.rec_class[i].szCallForwardingNumber);
+
+                       if (ss_info->SsRecord.ForwardingRecord.rec_class[i].bCallForwardingNumberPresent) {
+                               _ciss_strcpy(ciss_result->szDivertNumber[i],
+                                       sizeof(ciss_result->szDivertNumber[i]),
+                                       (char *)ss_info->SsRecord.ForwardingRecord.rec_class[i].szCallForwardingNumber);
+                               DBG("\n [CISS-ENGINE] #########forwarding number in response= %s########\n\n",
+                                       ciss_result->szDivertNumber[i]);
+                       }
+                       DBG("\n [CISS-ENGINE] __ciss_create_forward_result_string(Multiple %dth): Bearer = %d, Favor = %d, Status = %d, num=%s\n",
+                               i, ss_info->SsRecord.ForwardingRecord.rec_class[i].TeleCommService,
+                               ss_info->SsRecord.ForwardingRecord.rec_class[0].ForwardCondition,
+                               ss_info->SsRecord.ForwardingRecord.rec_class[i].Status,
+                               ciss_result->szDivertNumber[i]);
+               }
+       }
+
+}
+
+static void __ciss_create_barring_result_string(ciss_result_t *ciss_result /*out */, TelSsInfo_t *ss_info /*in */)
+{
+       int i;
+       /*  Set Supplement service type string */
+       ciss_result->szSsType = CISS_SERVICE_BARRING;
+       ciss_result->nRecordNum = ss_info->NumberOfRecords;
+
+       if (ss_info->NumberOfRecords <= 0) {
+               DBG("\n [CISS-ENGINE] __ciss_create_barring_result_string: (ME) parameter num=0!\n");
+               /* Set Display string : Default telecommSvc, Flavor, Result */
+               ciss_result->nRecordNum = 0;
+               _ciss_get_telecomm_svc(TAPI_SS_TS_NONE, &ciss_result->szBearer[0]);
+               _ciss_get_result_status_type(TAPI_SS_STATUS_PROVISIONED, &ciss_result->szResult[0]);
+       } else {
+               /* Single or Multiple result received case.. */
+               /* In case of all barring, tapi always sends a BAOC flavor. */
+               /* So we have to get the flavor with requested data that is saved in ss_result_string structure. */
+
+               for (i = 0; i < ss_info->NumberOfRecords; i++) {
+                       _ciss_get_telecomm_svc(ss_info->SsRecord.BarringRecord.rec_class[i].TeleCommService, &ciss_result->szBearer[i]);
+                       _ciss_get_result_status_type(ss_info->SsRecord.BarringRecord.rec_class[i].Status, &ciss_result->szResult[i]);
+                       DBG("\n [CISS-ENGINE] __ciss_tapi_handle_barring_cnf(Multiple %dth): Bearer = %d, Favor = %d, Status = %d\n",
+                               i, ss_info->SsRecord.BarringRecord.rec_class[i].TeleCommService,
+                               ss_info->SsRecord.BarringRecord.rec_class[i].Flavour,
+                               ss_info->SsRecord.BarringRecord.rec_class[i].Status);
+               }
+       }
+}
+
+static void __ciss_create_waiting_result_string(ciss_result_t *ciss_result /*out */, TelSsInfo_t *ss_info /*in */)
+{
+       TelSsStatus_t WaitingResultStatus;
+       int i;
+       /* Check Network result & Setting Proper result string to display */
+       /* Set Supplement service type string */
+       ciss_result->szSsType = CISS_SERVICE_WAITING;
+
+       /* Call waiting setting result state
+          1) Interrogate / Activate : all received bearers mean "Activate"
+          2) Deactivate : All received bearers mean "Deactivate"
+        */
+       if (ss_info->SsRecord.WaitingRecord.rec_class[0].Status == TAPI_SS_STATUS_QUIESCENT)
+               WaitingResultStatus = TAPI_SS_STATUS_PROVISIONED;
+       else
+               WaitingResultStatus = TAPI_SS_STATUS_ACTIVE;
+
+       DBG("\n [CISS-ENGINE] create_waiting_result_string : WaitingResultStatus = %d", WaitingResultStatus);
+       ciss_result->nRecordNum = ss_info->NumberOfRecords;
+
+       /* Request From MMI */
+       if (ss_info->NumberOfRecords <= 0) {
+               DBG("\n [CISS-ENGINE] __ciss_create_waiting_result_string: (ME) parameter num=0!\n");
+               /* Set Display string : Default telecommSvc, Flavor, Result */
+               _ciss_get_telecomm_svc(TAPI_SS_TS_NONE, &ciss_result->szBearer[0]);
+               _ciss_get_result_status_type(TAPI_SS_STATUS_PROVISIONED, &ciss_result->szResult[0]);
+               ciss_result->nRecordNum = 0;
+       } else {
+               /* Single or Multiple result received case.. */
+               /* Set Display string :  Network result value */
+
+               for (i = 0; i < ss_info->NumberOfRecords; i++) {
+                       _ciss_get_telecomm_svc(ss_info->SsRecord.WaitingRecord.rec_class[i].TeleCommService, &ciss_result->szBearer[i]);
+                       _ciss_get_result_status_type(WaitingResultStatus, &ciss_result->szResult[i]);
+                       DBG("\n [CISS-ENGINE] __ciss_create_waiting_result_string(Multiple %dth): Bearer = %d, Status = %d\n",
+                               i, ss_info->SsRecord.WaitingRecord.rec_class[i].TeleCommService,
+                               ss_info->SsRecord.WaitingRecord.rec_class[i].Status);
+               }
+       }
+}
+
+static void __ciss_create_cli_result_string(ciss_result_t *ciss_result /*out */, TelSsCliRecord_t *pCliRecord /*in */)
+{
+       ciss_result->szSsType = CISS_SERVICE_IDENTIFICATION;
+       ciss_result->szFlavor = CISS_FLAVOR_NONE;
+       ciss_result->szBearer[0] = CISS_TELECOMM_SVC_NONE;
+
+       switch (pCliRecord->IdentificationType) {
+       case TAPI_CALLING_LINE_IDENTITY_PRESENTATION:
+               ciss_result->cli_type = CISS_CALLING_LINE_IDENTITY_PRESENTATION;
+               DBG("\n [CISS-ENGINE] ciss_callId_display_identification: TAPI_CALLING_LINE_IDENTITY_PRESENTATION (ciss_info.cli_record.status=%d)\n", pCliRecord->CliStatus);
+               /* CLIP : The CLIP Supplementary Service provides the called party with the possibility to receive the line identity of the calling party.
+                ** CLIP is activated with Provisioned . Generally it is provisioned by n/w.
+                ** *#30# MMI string is used to check the status:
+                ** case1: When CLIP is provisioned and activated.SS status sent by QMOCHA will be TAPI_SS_STATUS_ACTIVE.
+                ** UI should display: "Number of caller is shown" or message something like this
+                */
+
+               if ((pCliRecord->CliStatus == TAPI_CLI_STATUS_ACTIVATED) ||
+                       pCliRecord->CliStatus == TAPI_CLI_STATUS_PROVISIONED) {
+                       /* Display : Caller ID is shown */
+                       ciss_result->szResult[0] = CISS_STATUS_ACTIVE;
+               } else {
+                       /* case2: When CLIP is not provisioned. SS status sent by QMOCHA will be TAPI_SS_STATUS_NOTHING.
+                        ** UI should display: "CLIP not subscribed" or message something like this.
+                        ** commented by Yongseock Choi : According to our police, because of no corresponding UI string, TAPI_SS_STATUS_NOTHING and TAPI_SS_STATUS_QUIESCENT
+                        ** TAPI_SS_STATUS_REGISTERED are mapped into "Caller ID is not shown".
+                        */
+                       /* Display : Caller ID is not shown */
+                       ciss_result->szResult[0] = CISS_STATUS_NOTHING;
+               }
+               break;
+
+       case TAPI_CALLING_LINE_IDENTITY_RESTRICTION:
+               ciss_result->cli_type = CISS_CALLING_LINE_IDENTITY_RESTRICTION;
+               DBG("\n [CISS-ENGINE] ciss_callId_display_identification: TAPI_CALLING_LINE_IDENTITY_RESTRICTION (cli_status = %d)\n", pCliRecord->CliStatus);
+               /* CLIR : The CLIR Supplementary Service enables the calling party to prevent presentation of its line identity to the called party.
+                ** The CLIR Supplementary Service can be offered with one subscription option :
+                **     1)permanent (invoked for all relevant calls) or
+                **     2)temporary (suppressed by the user on a per call basis).
+                **     In temporary mode , defaults values are:
+                **     1) presentation restricted: or
+                **     2) presentation not restricted(allowed).
+                */
+               if (pCliRecord->CliStatus == TAPI_CLI_STATUS_ACTIVATED ||
+                   pCliRecord->CliStatus == TAPI_CLI_STATUS_PROVISIONED ||
+                   pCliRecord->CliStatus == TAPI_CLI_STATUS_TEMP_RESTRICTED) {
+                       ciss_result->szResult[0] = CISS_STATUS_ACTIVE;
+               } else {
+                       /* Display : My caller ID sent on calling */
+                       ciss_result->szResult[0] = CISS_STATUS_NOTHING;
+               }
+               break;
+
+       case TAPI_CONNECTED_LINE_IDENTITY_PRESENTATION:
+               ciss_result->cli_type = CISS_CONNECTED_LINE_IDENTITY_PRESENTATION;
+               DBG("\n [CISS-ENGINE] ciss_callId_display_identification: TAPI_CONNECTED_LINE_IDENTITY_PRESENTATION (ciss_info.cli_record.cli_status=%d)\n", pCliRecord->CliStatus);
+               if (pCliRecord->CliStatus == TAPI_CLI_STATUS_ACTIVATED) {
+                       /* Display : Answering Caller ID is shown */
+                       ciss_result->szResult[0] = CISS_STATUS_ACTIVE;
+               } else {
+                       /* Display : Answering Caller ID is not shown */
+                       ciss_result->szResult[0] = CISS_STATUS_NOTHING;
+               }
+               break;
+
+       case TAPI_CONNECTED_LINE_IDENTITY_RESTRICTION:
+               ciss_result->cli_type = CISS_CONNECTED_LINE_IDENTITY_RESTRICTION;
+               DBG("\n [CISS-ENGINE] ciss_callId_display_identification: TAPI_CONNECTED_LINE_IDENTITY_RESTRICTION (ciss_info.cli_record.status=%d)\n", pCliRecord->CliStatus);
+               if (pCliRecord->CliStatus == TAPI_CLI_STATUS_ACTIVATED) {
+                       /* Display : My caller ID not sent on answering */
+                       ciss_result->szResult[0] = CISS_STATUS_ACTIVE;
+               } else {
+                       /* Display : My caller ID sent on answering */
+                       ciss_result->szResult[0] = CISS_STATUS_NOTHING;
+               }
+               break;
+
+       case TAPI_CALLING_NAME_PRESENTATION:
+               ciss_result->cli_type = CISS_CALLING_NAME_PRESENTATION;
+               DBG("\n [CISS-ENGINE] ciss_callId_display_identification: TAPI_CALLING_NAME_PRESENTATION (ciss_info.cli_record.status=%d)\n", pCliRecord->CliStatus);
+               if ((pCliRecord->CliStatus == TAPI_CLI_STATUS_ACTIVATED) ||
+                   (pCliRecord->CliStatus == TAPI_CLI_STATUS_PROVISIONED)) {
+                       /* Display : My caller name sent on answering */
+                       ciss_result->szResult[0] = CISS_STATUS_ACTIVE;
+               } else {
+                       /* Display : My caller name not sent on answering */
+                       ciss_result->szResult[0] = CISS_STATUS_NOTHING;
+               }
+               break;
+
+       default:
+               ciss_result->cli_type = CISS_CC_VOICE_IDENTIFICATION_NONE;
+               ciss_result->szResult[0] = CISS_STATUS_NOTHING;
+               DBG("\n [CISS-ENGINE] ciss_callId_display_identification: ERROR  Wrong  tapi_ss_cnap_status_t = %d  come. \n", pCliRecord->IdentificationType);
+               break;
+       }
+}
+
+static void __ciss_ui_mmi_create_cnap_result_string(ciss_result_t *result, char *szResult)
+{
+       switch (result->cli_type) {
+       case CISS_CALLING_LINE_IDENTITY_PRESENTATION:
+               switch (result->szResult[0]) {
+               case CISS_STATUS_ACTIVE:
+                       strncpy(szResult, CISS_STR_CALLER_ID_SHOWN, CISS_USSD_DATA_SIZE_MAX - 1);
+                       break;
+               case CISS_STATUS_REGISTERED:
+               case CISS_STATUS_PROVISIONED:
+               case CISS_STATUS_QUIESCENT:
+               case CISS_STATUS_NOTHING:
+               default:
+                       strncpy(szResult, CISS_STR_CALLER_ID_HIDDEN, CISS_USSD_DATA_SIZE_MAX - 1);
+                       break;
+               }
+               break;
+       case CISS_CALLING_LINE_IDENTITY_RESTRICTION:
+               switch (result->szResult[0]) {
+               case CISS_STATUS_ACTIVE:
+                       strncpy(szResult, CISS_STR_MY_CALLER_ID_IS_NOT_SENT_WHEN_CALLING, CISS_USSD_DATA_SIZE_MAX - 1);
+                       break;
+               case CISS_STATUS_REGISTERED:
+               case CISS_STATUS_PROVISIONED:
+               case CISS_STATUS_QUIESCENT:
+               case CISS_STATUS_NOTHING:
+               default:
+                       strncpy(szResult, CISS_STR_MY_CALLER_ID_WILL_BE_SENT_WHEN_CALLING, CISS_USSD_DATA_SIZE_MAX - 1);
+                       break;
+               }
+               break;
+       case CISS_CONNECTED_LINE_IDENTITY_PRESENTATION:
+               switch (result->szResult[0]) {
+               case CISS_STATUS_ACTIVE:
+                       strncpy(szResult, CISS_STR_ANSWERING_NUMBER_IS_SHOWN_WHEN_CALLING, CISS_USSD_DATA_SIZE_MAX - 1);
+                       break;
+               case CISS_STATUS_REGISTERED:
+               case CISS_STATUS_PROVISIONED:
+               case CISS_STATUS_QUIESCENT:
+               case CISS_STATUS_NOTHING:
+               default:
+                       strncpy(szResult, CISS_STR_ANSWERING_NUMBER_IS_NOT_SHOWN_WHEN_CALLING, CISS_USSD_DATA_SIZE_MAX - 1);
+                       break;
+               }
+               break;
+       case CISS_CONNECTED_LINE_IDENTITY_RESTRICTION:
+               switch (result->szResult[0]) {
+               case CISS_STATUS_ACTIVE:
+                       strncpy(szResult, CISS_STR_MY_CALLER_ID_IS_NOT_SENT_WHEN_ANSWERING_CALLS, CISS_USSD_DATA_SIZE_MAX - 1);
+                       break;
+               case CISS_STATUS_REGISTERED:
+               case CISS_STATUS_PROVISIONED:
+               case CISS_STATUS_QUIESCENT:
+               case CISS_STATUS_NOTHING:
+               default:
+                       strncpy(szResult, CISS_STR_MY_CALLER_ID_WILL_BE_SENT_WHEN_ANSWERING_CALLS, CISS_USSD_DATA_SIZE_MAX - 1);
+                       break;
+               }
+               break;
+       case CISS_CALLING_NAME_PRESENTATION:
+               switch (result->szResult[0]) {
+               case CISS_STATUS_ACTIVE:
+                       strncpy(szResult, CISS_STR_CALLER_ID_AVAILABLE, CISS_USSD_DATA_SIZE_MAX - 1);
+                       break;
+               case CISS_STATUS_REGISTERED:
+               case CISS_STATUS_PROVISIONED:
+               case CISS_STATUS_QUIESCENT:
+               case CISS_STATUS_NOTHING:
+               default:
+                       strncpy(szResult, CISS_STR_CALLER_ID_RESTRICTED, CISS_USSD_DATA_SIZE_MAX - 1);
+                       break;
+               }
+               break;
+       default:
+               strncpy(szResult, "Incorrect Service", CISS_USSD_DATA_SIZE_MAX - 1);
+               break;
+       }
+       DBG("\n \n [CISS-MMI] THe result String :%s\n", szResult);
+}
+
+static void __ciss_ui_mmi_create_mmi_result_string(ciss_result_t *pSSResult, int index, char *result_string)
+{
+       DBG("Enter");
+       char mszBuffer[CISS_TEXT_LEN_MAX];
+       char szBuffer[CISS_TEXT_LEN_MAX];
+       char service[CISS_TEXT_LEN_MAX];
+       char teleservice[CISS_TEXT_LEN_MAX];
+       char flavor[CISS_TEXT_LEN_MAX];
+       char status[CISS_TEXT_LEN_MAX];
+
+       _ciss_ui_mmi_get_service_name(pSSResult->szSsType, service);
+       _ciss_ui_mmi_get_flavor_name(pSSResult->szFlavor, flavor);
+       _ciss_ui_mmi_get_bearer_name(pSSResult->szSsType, pSSResult->szBearer[index], teleservice);
+       _ciss_ui_mmi_get_result_status_type(pSSResult->szSsType, pSSResult->szResult[index], status);
+
+       strncpy(mszBuffer, service, CISS_TEXT_LEN_MAX - 1);
+       mszBuffer[CISS_TEXT_LEN_MAX - 1] = '\0';
+
+       if (strlen(teleservice)) {
+               strncat(mszBuffer, "<br>", strlen("<br>"));
+               strncat(mszBuffer, " -", strlen(" -"));
+               strncat(mszBuffer, teleservice, strlen(teleservice));
+       }
+       DBG("create_result_string: Label Text(telecommSvc) = %d\n", pSSResult->szBearer[index]);
+
+       if (pSSResult->szSsType == CISS_SERVICE_DIVERTING) {
+               /*  if Flavor case is 'no reply' then add timer information */
+               if ((strcmp(flavor, CISS_STR_CALL_DIVERTING_ACTIVE_C_WHEN_NOREPLY) == 0) &&
+                       (pSSResult->nDivertWaitingTime[index] != 0)) {
+                       snprintf(szBuffer, CISS_TEXT_LEN_MAX, "%s %02ds", flavor, pSSResult->nDivertWaitingTime[index]);
+               } else {
+                       strncpy(szBuffer, flavor, CISS_TEXT_LEN_MAX - 1);
+                       szBuffer[CISS_TEXT_LEN_MAX - 1] = '\0';
+               }
+
+               if (strlen(flavor) > 1) {
+                       strncat(mszBuffer, "<br>", strlen("<br>"));
+                       strncat(mszBuffer, " -", strlen(" -"));
+                       strncat(mszBuffer, szBuffer, strlen(szBuffer));
+               }
+               DBG("\n [CISS-MMI] create_result_string: Label Text(flavor) = %s\n", flavor);
+
+               /* 4) Display Status */
+               strncat(mszBuffer, "<br>", strlen("<br>"));
+               strncat(mszBuffer, " -", strlen(" -"));
+               strncat(mszBuffer, status, strlen(szBuffer));
+
+               /* 5) Display telephone number */
+               if (strlen(pSSResult->szDivertNumber[index]) &&
+                   (strcmp(status, CISS_STR_ACTIVATED) == 0)) {
+                       DBG("\n [CISS-MMI] create_result_string: Call forwarding number = %s\n",
+                               pSSResult->szDivertNumber[index]);
+
+                       strncat(mszBuffer, "<br>", strlen("<br>"));
+                       strncat(mszBuffer, " ", strlen(" "));
+                       strncat(mszBuffer, pSSResult->szDivertNumber[index], strlen(pSSResult->szDivertNumber[index]));
+               } else
+                       DBG("\n [CISS-MMI] create_result_string: Call forwarding number is not need");
+       } else if (pSSResult->szSsType == CISS_SERVICE_BARRING) {
+               if (strlen(flavor) > 1) {
+                       strncat(mszBuffer, "<br>", strlen("<br>"));
+                       strncat(mszBuffer, " -", strlen(" -"));
+                       strncat(mszBuffer, flavor, strlen(flavor));
+               }
+
+               /* 4) Display Status */
+               strncat(mszBuffer, "<br>", strlen("<br>"));
+               strncat(mszBuffer, " -", strlen(" -"));
+               strncat(mszBuffer, status, strlen(status));
+       } else if (pSSResult->szSsType == CISS_SERVICE_WAITING) {
+               /* 4) Display Status */
+               strncat(mszBuffer, "<br>", strlen("<br>"));
+               strncat(mszBuffer, " -", strlen("< ->"));
+               strncat(mszBuffer, status, strlen(status));
+       }
+       strncpy(result_string, mszBuffer, CISS_USSD_DATA_SIZE_MAX - 1);
+
+       DBG("Result String:%s\n", result_string);
+       DBG("Leave");
+}
+
+static int __ciss_tapi_handle_forward_cnf(ciss_result_t *ciss_result, TelSsInfo_t *ss_info)
+{
+       DBG("\n [CISS-ENGINE] __ciss_tapi_handle_forward_cnf: TAPI_EVENT_SS_FORWARD_XXX_CNF received\n");
+       DBG("\n [CISS-ENGINE] __ciss_tapi_handle_forward_cnf(Single): Bearer = %d, Flavor = %d, Status = %d \n",
+               ss_info->SsRecord.ForwardingRecord.rec_class[0].TeleCommService,
+               ss_info->SsRecord.ForwardingRecord.rec_class[0].ForwardCondition,
+               ss_info->SsRecord.ForwardingRecord.rec_class[0].Status);
+
+       memset(ciss_result, 0, sizeof(ciss_result_t));
+       DBG("\n [CISS-ENGINE] ss_info.SsRecord.ForwardingRecord.rec_class[0].szCallForwardingNumber : %s %d",
+               ss_info->SsRecord.ForwardingRecord.rec_class[0].szCallForwardingNumber,
+               strlen((char *)ss_info->SsRecord.ForwardingRecord.rec_class[0].szCallForwardingNumber));
+       _ciss_get_forward_flavor_type(ss_info->SsRecord.ForwardingRecord.rec_class[0].ForwardCondition,
+               &(ciss_result->szFlavor));
+       __ciss_create_forward_result_string(ciss_result, ss_info);
+
+       DBG("\n [CISS-ENGINE] this->ss_req_data.flavor: %d\n", ciss_result->szFlavor);
+       DBG("\n [CISS-ENGINE] this->ss_req_data.telecommSvc: %d\n, this->ss_req_data.action: %d \n",
+               ciss_result->szBearer[0], ciss_result->szResult[0]);
+
+       return TRUE;
+}
+
+static int __ciss_tapi_handle_barring_cnf(ciss_result_t *ciss_result, TelSsInfo_t *ss_info)
+{
+       DBG("\n [CISS-ENGINE] __ciss_tapi_handle_barring_cnf: TAPI_EVENT_SS_BARRING_XXX_CNF received\n");
+       DBG("\n [CISS-ENGINE] __ciss_tapi_handle_barring_cnf(Single): Bearer = %d, Favor = %d, Status = %d\n",
+               ss_info->SsRecord.BarringRecord.rec_class[0].TeleCommService,
+               ss_info->SsRecord.BarringRecord.rec_class[0].Flavour,
+               ss_info->SsRecord.BarringRecord.rec_class[0].Status);
+
+       memset(ciss_result, 0, sizeof(ciss_result_t));
+       _ciss_get_barring_flavor_type(ss_info->SsRecord.BarringRecord.rec_class[0].Flavour, &(ciss_result->szFlavor));
+       __ciss_create_barring_result_string(ciss_result, ss_info);
+
+       return TRUE;
+}
+
+static int __ciss_tapi_handle_waiting_cnf(ciss_result_t *ciss_result /*out */, TelSsInfo_t *ss_info /*in */)
+{
+       DBG("\n [CISS-ENGINE] __ciss_tapi_handle_waiting_cnf: TAPI_EVENT_SS_WAITING_XXX_CNF received\n");
+       DBG("\n [CISS-ENGINE] __ciss_tapi_handle_waiting_cnf(Single): Bearer = %d, Status = %d\n",
+               ss_info->SsRecord.WaitingRecord.rec_class[0].TeleCommService,
+               ss_info->SsRecord.WaitingRecord.rec_class[0].Status);
+
+       memset(ciss_result, 0, sizeof(ciss_result_t));
+       __ciss_create_waiting_result_string(ciss_result, ss_info);
+
+       return TRUE;
+}
+
+static int __ciss_tapi_handle_call_id(ciss_result_t *ciss_result, TelSsInfo_t *ss_info)
+{
+       DBG("\n [CISS-ENGINE] __ciss_tapi_handle_call_id: TAPI_EVENT_SS_IDENTITY_IND received\n");
+
+       memset(ciss_result, 0, sizeof(ciss_result_t));
+       __ciss_create_cli_result_string(ciss_result, &(ss_info->SsRecord.CliRecord));
+       ciss_result->nRecordNum = 1;
+
+       return TRUE;
+}
+
+static int __ciss_create_ss_result_sting(char *ss_result_string /*out */, TelSsInfo_t *ss_info /*in */)
+{
+       DBG("Enter");
+
+       ciss_result_t ciss_result;
+       switch (ss_info->SsType) {
+       case TAPI_SS_TYPE_FORWARDING:
+               __ciss_tapi_handle_forward_cnf(&ciss_result, ss_info);
+               break;
+
+       case TAPI_SS_TYPE_BARRING:
+               __ciss_tapi_handle_barring_cnf(&ciss_result, ss_info);
+               break;
+
+       case TAPI_SS_TYPE_WAITING:
+               __ciss_tapi_handle_waiting_cnf(&ciss_result, ss_info);
+               break;
+
+       case TAPI_SS_TYPE_IDENTIFICATION:
+               __ciss_tapi_handle_call_id(&ciss_result, ss_info);
+               break;
+
+       default:
+               return -1;
+       }
+
+       memset(resultstring, 0x0, sizeof(resultstring));
+       if (ciss_result.szSsType == CISS_SERVICE_IDENTIFICATION) {
+               DBG("\n [CISS-MMI] CISS_SERVICE_IDENTIFICATION \n");
+               __ciss_ui_mmi_create_cnap_result_string(&ciss_result, resultstring[0]);
+       } else if (ciss_result.nRecordNum == 0) {
+               DBG("\n [CISS-MMI] result.nRecordNum == 0  \n");
+               strncpy(resultstring[0], CISS_STR_SUCCESS, CISS_TEXT_LEN_MAX - 1);
+       } else {
+               int g_count = 0;
+               for (g_count = 0; g_count < ciss_result.nRecordNum; g_count++) {
+                       __ciss_ui_mmi_create_mmi_result_string(&ciss_result, g_count, resultstring[g_count]);
+                       DBG("\n [CISS-MMI]  Copying data & parsing  Result string ::::::::::: %s \n", resultstring[g_count]);
+               }
+       }
+
+       int count = 0;
+
+       for (count = 0; count < ciss_result.nRecordNum; count++) {
+               strncat(ss_result_string, "<br> ", strlen("<br> "));
+               strncat(ss_result_string, resultstring[count], strlen(resultstring[count]));
+               strncat(ss_result_string, "<br> ", strlen("<br> "));
+       }
+       DBG("Final Result string : %s ", ss_result_string);
+       DBG("Leave");
+
+       return 0;
+}
+
+static void __ciss_ssresp_view_quit_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       elm_exit();
+}
+
+Evas_Object *_ciss_create_ss_resp_view(Evas_Object *parent, TelSsInfo_t *ss_info, void *data)
+{
+       DBG("Enter");
+       retv_if(parent == NULL, NULL);
+       retv_if(data == NULL, NULL);
+
+       struct appdata *ad = (struct appdata *)data;
+       Evas_Object *nf;
+       Evas_Object *l_button;
+
+       char ss_result_string[CISS_MMI_MAX_SS_RESP_STRING] = { };
+
+       if (ss_info)
+               __ciss_create_ss_result_sting(ss_result_string, ss_info);
+       else
+               snprintf(ss_result_string, CISS_MMI_MAX_SS_RESP_STRING, "%s", CISS_STR_SUCCESS);
+
+       nf = elm_naviframe_add(parent);
+       retv_if(nf == NULL, NULL);
+
+       Evas_Object *genlist =
+               _ciss_create_result_genlist(ss_result_string, CISS_MMI_MAX_SS_RESP_STRING, nf, ad);
+       retv_if(NULL == genlist, NULL);
+
+       l_button = elm_button_add(nf);
+       evas_object_smart_callback_add(l_button, "clicked",
+               __ciss_ssresp_view_quit_cb, NULL);
+
+       elm_naviframe_item_push(nf, CISS_STR_INFORMATION,
+               l_button, NULL, genlist, NULL);
+       elm_object_style_set(l_button, "naviframe/back_btn/default");
+
+       evas_object_show(nf);
+
+       DBG("Leave");
+       return nf;
+}
+
diff --git a/src/ciss-respnd.c b/src/ciss-respnd.c
new file mode 100755 (executable)
index 0000000..5fb8ce4
--- /dev/null
@@ -0,0 +1,218 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include "ciss-respnd.h"
+#include "ciss-common.h"
+#include "ciss-widget.h"
+#include <TapiEvent.h>
+#include <Ecore_IMF.h>
+
+typedef enum {
+       BT_KOR_MODE = 0,
+       BT_CHINESE_MODE = 1, /* Not support yet */
+       BT_ENG_LOWER_MODE = 2,
+       BT_ENG_UPPER_MODE = 3,
+       BT_NUMBER_MODE = 4,
+       BT_SYMBOL_MODE = 5,
+       BT_SYMBOL2_MODE = 6,
+       BT_SYMBOL3_MODE = 7,
+       BT_JAPANESE_MODE = 8,
+       BT_ENV_MODE = 9
+} ciss_ime_mode_t;
+
+static Elm_Entry_Filter_Limit_Size limit_filter_data;
+
+static void __ciss_respond_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DBG("coming inside __ciss_respond_cb \n");
+       int ret;
+       char *buf;
+       char ussd_str[TAPI_SS_USSD_DATA_SIZE_MAX] = {0, };
+       int pRequestId = 0;
+       Ecore_IMF_Context *imf_context;
+       Evas_Object *error_popup;
+       struct appdata *ad = (struct appdata *)data;
+
+       buf = (char *)elm_entry_entry_get(ad->ef_entry);
+       imf_context = elm_entry_imf_context_get(ad->ef_entry);
+       if (imf_context)
+               ecore_imf_context_input_panel_hide(imf_context);
+
+       snprintf(ussd_str, TAPI_SS_USSD_DATA_SIZE_MAX, "%s", buf);
+       if (strlen(ussd_str) == 0) {
+               error_popup = _ciss_create_popup(ad->nf, CISS_STR_ENTER_NUMBER);
+               evas_object_show(error_popup);
+               return;
+       }
+
+       DBG("The data is %s %d \n", ussd_str, strlen(buf));
+
+       TelSsUssdMsgInfo_t ussdRspRecord;
+       memset(&ussdRspRecord, 0, sizeof(TelSsUssdMsgInfo_t));
+       strncpy(ussdRspRecord.szUssdString, ussd_str, sizeof(ussdRspRecord.szUssdString) - 1);
+       ussdRspRecord.szUssdString[strlen(ussdRspRecord.szUssdString)] = '\0';
+       ussdRspRecord.UssdStringLength = strlen(ussdRspRecord.szUssdString);
+       ad->popup = _ciss_create_noti_popup(ad->win_main,
+                               CISS_STR_REQUESTING, NULL, POPUP_DISPLAY_DURATION, ad);
+       ret = tel_send_ss_ussd_response(&ussdRspRecord, &pRequestId);
+
+       DBG("The value of ret is  %d and request id is %d \n", ret, pRequestId);
+       ad->request_id = pRequestId;    /* of no use as of now */
+}
+
+static void __ciss_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       ret_if(NULL == data);
+
+       struct appdata *ad = (struct appdata *)data;
+       Evas_Object *editfield = ad->ef_layout;
+       Elm_Object_Item *navi_it = elm_naviframe_top_item_get(ad->nf);
+       ret_if(!navi_it);
+
+       if (elm_object_focus_get(editfield)) {
+               Evas_Object *btn = elm_object_item_part_content_get(navi_it,
+                       "title_right_btn");
+
+               if (elm_entry_is_empty(obj)) {
+                       elm_object_signal_emit(editfield, "elm,state,eraser,hide", "elm");
+                       if (btn)
+                               elm_object_disabled_set(btn, EINA_TRUE);
+               } else {
+                       elm_object_signal_emit(editfield, "elm,state,eraser,show", "elm");
+                       if (btn)
+                               elm_object_disabled_set(btn, EINA_FALSE);
+               }
+       }
+}
+
+static void __ciss_focused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       ret_if(NULL == data);
+       struct appdata *ad = (struct appdata *)data;
+       Evas_Object *editfield = ad->ef_layout;
+
+       if (!elm_entry_is_empty(obj))
+               elm_object_signal_emit(editfield, "elm,state,eraser,show", "elm");
+       elm_object_signal_emit(editfield, "elm,state,guidetext,hide", "elm");
+}
+
+static void __ciss_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       ret_if(NULL == data);
+       struct appdata *ad = (struct appdata *)data;
+       Evas_Object *editfield = ad->ef_layout;
+
+       if (elm_entry_is_empty(obj))
+               elm_object_signal_emit(editfield, "elm,state,guidetext,show", "elm");
+       elm_object_signal_emit(editfield, "elm,state,eraser,hide", "elm");
+}
+
+static void __ciss_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+       elm_entry_entry_set(data, "");
+}
+
+static Evas_Object *__ciss_editfield_add(Evas_Object *parent, void *data)
+{
+       retv_if(data == NULL, NULL);
+       struct appdata *ad = (struct appdata *)data;
+
+       Evas_Object *layout = NULL;
+       Evas_Object *entry = NULL;
+
+       layout = elm_layout_add(parent);
+       ad->ef_layout = layout;
+       elm_layout_theme_set(layout, "layout", "editfield", "title");
+
+       entry = elm_entry_add(parent);
+       ad->ef_entry = entry;
+       elm_entry_scrollable_set(entry, EINA_TRUE);
+       elm_entry_single_line_set(entry, EINA_TRUE);
+
+       limit_filter_data.max_char_count = 0;
+       limit_filter_data.max_byte_count = TAPI_SS_USSD_DATA_SIZE_MAX;
+       elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter_data);
+       evas_object_smart_callback_add(entry, "changed", __ciss_changed_cb, ad);
+       evas_object_smart_callback_add(entry, "focused", __ciss_focused_cb, ad);
+       evas_object_smart_callback_add(entry, "unfocused", __ciss_unfocused_cb, ad);
+       evas_object_show(entry);
+
+       elm_object_part_content_set(layout, "elm.swallow.content", entry);
+       elm_object_part_text_set(layout, "elm.text", CISS_STR_ENTER_NUMBER);
+       elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", __ciss_eraser_clicked_cb, entry);
+       elm_object_focus_set(entry, EINA_TRUE);
+
+       return layout;
+}
+
+static Evas_Object *__ciss_gl_content_respond_ime(void *data, Evas_Object *obj, const char *part)
+{
+       Evas_Object *editfield = NULL;
+
+       if (!strcmp(part, "elm.icon")) {
+               editfield = __ciss_editfield_add(obj, data);
+               return editfield;
+       }
+
+       return NULL;
+}
+
+static Evas_Object *__ciss_respond_ime_genlist(void *data)
+{
+       Elm_Object_Item *item = NULL;
+       Evas_Object *genlist;
+       struct appdata *ad = (struct appdata *)data;
+
+       genlist = elm_genlist_add(ad->nf);
+
+       ad->itc_ime->item_style = "1icon";
+       ad->itc_ime->func.text_get = NULL;
+       ad->itc_ime->func.content_get = __ciss_gl_content_respond_ime;
+       ad->itc_ime->func.state_get = NULL;
+       ad->itc_ime->func.del = NULL;
+
+       item = elm_genlist_item_append(genlist, ad->itc_ime,
+                       (void *)ad, NULL, ELM_GENLIST_ITEM_NONE,
+                       NULL, NULL);
+       return genlist;
+}
+
+void _ciss_create_respond_view(void *data)
+{
+       DBG("Enter");
+       struct appdata *ad = (struct appdata *)data;
+       Evas_Object *ime_genlist;
+       Elm_Object_Item *navi_it = NULL;
+       Evas_Object *btn = NULL;
+
+       ime_genlist = __ciss_respond_ime_genlist(ad);
+
+       _ciss_remove_naviframe(ad->nf);
+       navi_it = elm_naviframe_item_push(ad->nf, CISS_STR_INFORMATION,
+               NULL, NULL, ime_genlist, "1line");
+
+       btn = _cst_create_title_btn(ad->nf, CISS_STR_QUIT,
+               _ciss_ussd_quit_cb, (void *)ad);
+       elm_object_item_part_content_set(navi_it, "title_left_btn", btn);
+
+       btn = _cst_create_title_btn(ad->nf, CISS_STR_REPLY,
+               __ciss_respond_cb, (void *)ad);
+       elm_object_item_part_content_set(navi_it, "title_right_btn", btn);
+       elm_object_disabled_set(btn, EINA_TRUE);
+}
diff --git a/src/ciss-tapi-request.c b/src/ciss-tapi-request.c
new file mode 100755 (executable)
index 0000000..2565630
--- /dev/null
@@ -0,0 +1,674 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include <TapiEvent.h>
+#include <ITapiSs.h>
+#include <ITapiSat.h>
+#include <TapiCommon.h>
+#include "ciss-tapi-request.h"
+#include "ciss-parser.h"
+#include "ciss-util.h"
+#include "vconf.h"
+#include "ciss-debug.h"
+#include "ciss-string.h"
+#include "ciss-widget.h"
+#include "ciss-ussd.h"
+#include "ciss-resp.h"
+#include "ciss-converter.h"
+
+typedef struct _EventHandler {
+       int event_type;
+       unsigned int event_id;
+       TelAppCallback func;
+} EventHandler;
+
+EventHandler event_list[] = {
+       {TAPI_EVENT_SS_BARRING_CHANGEPASS_CNF, 0, _ciss_on_tapi_ss_event},
+       {TAPI_EVENT_SS_BARRING_CNF, 0, _ciss_on_tapi_ss_event},
+       {TAPI_EVENT_SS_BARRING_QUERYSTATUS_CNF, 0, _ciss_on_tapi_ss_event},
+       {TAPI_EVENT_SS_CLI_QUERYSTATUS_CNF, 0, _ciss_on_tapi_ss_event},
+       {TAPI_EVENT_SS_FORWARD_CNF, 0, _ciss_on_tapi_ss_event},
+       {TAPI_EVENT_SS_FORWARD_QUERYSTATUS_CNF, 0, _ciss_on_tapi_ss_event},
+       {TAPI_EVENT_SS_USSD_CANCEL_CNF, 0, _ciss_on_tapi_ussd_event},
+       {TAPI_EVENT_SS_USSD_CNF, 0, _ciss_on_tapi_ussd_event},
+       {TAPI_EVENT_SS_WAITING_CNF, 0, _ciss_on_tapi_ss_event},
+       {TAPI_EVENT_SS_WAITING_QUERYSTATUS_CNF, 0, _ciss_on_tapi_ss_event},
+       {TAPI_EVENT_SAT_SEND_SS_IND, 0, _ciss_on_tapi_sat_ss_event},
+       {TAPI_EVENT_SAT_SEND_USSD_IND, 0, _ciss_on_tapi_sat_ussd_event},
+       {TAPI_EVENT_SS_REL_COMP_MSG_NOTIFY, 0, _ciss_on_tapi_ss_rel_complete_noti},
+};
+
+int _ciss_tapi_event_setup(struct appdata *ad)
+{
+       DBG("Enter");
+       int i = 0;
+       int len = 0;
+       int api_err = -1;
+
+       len = sizeof(event_list) / sizeof(EventHandler);
+
+       if (tel_init() == 0) {
+               for (i = 0; i < len; i++) {
+                       tel_register_event(event_list[i].event_type, &(event_list[i].event_id), event_list[i].func, (void *)ad);
+               }
+
+               if ((api_err = tel_register_app_name("org.tizen.ciss-mmi")) != TAPI_API_SUCCESS)
+                       DBG("tel_register_app_name failed error=%d", api_err);
+       } else
+               DBG("TelTapiInitEcore() failed.");
+
+       DBG("Leave");
+       return 0;
+}
+
+void _ciss_deregister_tel_event(void)
+{
+       DBG("Enter");
+       int len, ret, i;
+
+       len = sizeof(event_list) / sizeof(EventHandler);
+
+       for (i = 0; i < len; i++) {
+               ret = tel_deregister_event(event_list[i].event_id);
+               if (ret != TAPI_API_SUCCESS)
+                       DBG("tel_deregister_event error=%d", ret);
+       }
+
+       ret = tel_deinit();
+       if (ret != TAPI_API_SUCCESS)
+               DBG("TAPI delinit() ret : %d", ret);
+}
+
+ciss_err_t _ciss_send_tapi_request(ciss_mmi_context_t *mmi_ctx)
+{
+       DBG("Enter");
+
+       TelSsUssdMsgInfo_t stUssdRecord;
+       TelSsForwardInfo_t stCfActReq;
+       TelSsCallBarringInfo_t stCbReq;
+       TelSsWaitingInfo_t stCwReq;
+       int RequestId;
+       TapiResult_t err = TAPI_API_SUCCESS;
+       ciss_err_t error_code = CISS_ERR_NONE;
+
+       if (mmi_ctx->ss_type == TAPI_SS_TYPE_FORWARDING) {
+               memset(&stCfActReq, 0, sizeof(TelSsForwardInfo_t));
+               stCfActReq.Condition = TAPI_SS_FORWARD_WHEN_UNCONDITIONAL_EV;
+               stCfActReq.Condition = (TelSsForwardWhen_t) mmi_ctx->ss_flavor;
+               DBG("\n [CISS-ENGINE] ss_flavor= %d,%d", stCfActReq.Condition, mmi_ctx->ss_flavor);
+
+               _ciss_get_tapi_forward_type(mmi_ctx->tapi_bsg, &stCfActReq.Type);
+               stCfActReq.NoReplyConditionTimer = mmi_ctx->nr_timer;
+               strncpy((char *)stCfActReq.szPhoneNumber, mmi_ctx->divert_number, CISS_NUMBER_LEN_MAX);
+               stCfActReq.szPhoneNumber[CISS_NUMBER_LEN_MAX] = '\0';
+       } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_BARRING) {
+               memset(&stCbReq, 0, sizeof(TelSsCallBarringInfo_t));
+               stCbReq.Type = (TelSsCallBarType_t) mmi_ctx->ss_flavor;
+               DBG("\n [CISS-ENGINE] ss_flavor= %d,%d", stCbReq.Type, mmi_ctx->ss_flavor);
+               _ciss_get_tapi_call_type(mmi_ctx->tapi_bsg, &stCbReq.CallType);
+               memcpy(&stCbReq.szPassword, mmi_ctx->ss_password, CISS_MAX_PASSWORD_LEN);
+       } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_WAITING) {
+               memset(&stCwReq, 0, sizeof(TelSsWaitingInfo_t));
+               _ciss_get_tapi_call_type(mmi_ctx->tapi_bsg, &stCwReq.CallType);
+       }
+       switch (mmi_ctx->opcode) {
+       case registerSS:
+               DBG("registerSS");
+               /* send a register request */
+               if (mmi_ctx->ss_type == TAPI_SS_TYPE_FORWARDING) {
+                       stCfActReq.Mode = TAPI_CALL_FORWARD_MODE_REGISTRATION_EV;
+
+                       err = tel_set_ss_forward(&stCfActReq, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_set_ss_forward : REGISTRATION call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_set_ss_forward : REGISTRATION call fails request ID = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_BARRING) {
+
+                       stCbReq.Mode = TAPI_SS_CALL_BAR_ACTIVATE;
+
+                       err = tel_set_ss_barring(&stCbReq, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_set_ss_barring : ACTIVATE call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_set_ss_barring : ACTIVATE call fails request ID       = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_WAITING) {
+                       stCwReq.Mode = TAPI_SS_CW_ACTIVATE;
+                       err = tel_set_ss_waiting(&stCwReq, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_set_ss_waiting : ACTIVATION call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_set_ss_waiting : ACTIVATION call fails request ID  = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               }
+               break;
+       case eraseSS:
+               DBG("eraseSS");
+               /* send an erase command */
+               if (mmi_ctx->ss_type == TAPI_SS_TYPE_FORWARDING) {
+                       stCfActReq.Mode = TAPI_CALL_FORWARD_MODE_ERASURE_EV;
+
+                       err = tel_set_ss_forward(&stCfActReq, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_set_ss_forward : DE-REGISTRATION call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_set_ss_forward : DE-REGISTRATION call fails request = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_BARRING) {
+                       stCbReq.Mode = TAPI_SS_CALL_BAR_DEACTIVATE;
+
+                       err = tel_set_ss_barring(&stCbReq, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_set_ss_barring : DEACTIVATE call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_set_ss_barring : DEACTIVATE call fails request ID  = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_WAITING) {
+                       stCwReq.Mode = TAPI_SS_CW_DEACTIVATE;
+
+                       err = tel_set_ss_waiting(&stCwReq, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_set_ss_waiting : DEACTIVATION call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_set_ss_waiting : DEACTIVATION call fails request ID   = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               }
+               break;
+       case activateSS:
+               DBG("activateSS");
+               /* send an activate request */
+               if (mmi_ctx->ss_type == TAPI_SS_TYPE_FORWARDING) {
+                       stCfActReq.Mode = TAPI_CALL_FORWARD_MODE_ENABLE_EV;
+
+                       err = tel_set_ss_forward(&stCfActReq, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_set_ss_forward : ACTIVATE call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_set_ss_forward : ACTIVATE call fails request ID       = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_BARRING) {
+                       stCbReq.Mode = TAPI_SS_CALL_BAR_ACTIVATE;
+
+                       err = tel_set_ss_barring(&stCbReq, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_set_ss_barring : ACTIVATE call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_set_ss_barring : ACTIVATE call fails request ID       = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+
+               } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_WAITING) {
+                       stCwReq.Mode = TAPI_SS_CW_ACTIVATE;
+
+                       err = tel_set_ss_waiting(&stCwReq, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_set_ss_waiting : ACTIVATION call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_set_ss_waiting : ACTIVATION call fails request ID  = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_IDENTIFICATION) {
+                       DBG("\n [CISS-ENGINE] Don't activated CLI option");
+                       error_code = CISS_ERR_ILLEGAL_SS_OPER;
+                       return error_code;
+               }
+               break;
+       case deactivateSS:
+               DBG("deactivateSS");
+               /* deactivate request */
+               if (mmi_ctx->ss_type == TAPI_SS_TYPE_FORWARDING) {
+                       stCfActReq.Mode = TAPI_CALL_FORWARD_MODE_DISABLE_EV;
+                       err = tel_set_ss_forward(&stCfActReq, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_set_ss_forward : DEACTIVATE call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_set_ss_forward : DEACTIVATE call fails request ID  = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_BARRING) {
+                       stCbReq.Mode = TAPI_SS_CALL_BAR_DEACTIVATE;
+
+                       DBG("\n [CISS-ENGINE] **** ss_mode = %d\n", stCbReq.Mode);
+                       DBG("\n [CISS-ENGINE] **** flavor = %d\n", stCbReq.Type);
+                       DBG("\n [CISS-ENGINE] **** call type = %d\n", stCbReq.CallType);
+                       DBG("\n [CISS-ENGINE] **** Pwd = %s\n", stCbReq.szPassword);
+
+                       err = tel_set_ss_barring(&stCbReq, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_set_ss_barring : DEACTIVATE call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_set_ss_barring : DEACTIVATE call fails request ID  = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_WAITING) {
+                       stCwReq.Mode = TAPI_SS_CW_DEACTIVATE;
+                       err = tel_set_ss_waiting(&stCwReq, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_set_ss_waiting : ACTIVATION call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_set_ss_waiting : ACTIVATION call fails request ID  = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               }
+               break;
+       case interrogateSS:
+               DBG("interrogateSS");
+               /* interrogate request */
+               if (mmi_ctx->ss_type == TAPI_SS_TYPE_FORWARDING) {
+                       err = tel_get_ss_forward_status(stCfActReq.Type, stCfActReq.Condition, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_get_ss_forward_status call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_get_ss_forward_status : CHECK_STATUS call fails request ID  = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_BARRING) {
+                       err = tel_get_ss_barring_status(stCbReq.Type, stCbReq.CallType, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_get_ss_barring_status call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_get_ss_barring_status : CHECK_STATUS call fails request ID  = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_WAITING) {
+                       err = tel_get_ss_waiting_status(stCwReq.CallType, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_get_ss_waiting_status call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_get_ss_waiting_status : fails request ID  = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_IDENTIFICATION) {
+                       err = tel_get_ss_cli_status(mmi_ctx->ss_flavor, &RequestId);
+                       if (err != TAPI_API_SUCCESS) {
+                               DBG("\n [CISS-ENGINE] tel_get_ss_cli_status call fails g_err_code = %x", err);
+                               DBG("\n [CISS-ENGINE] tel_get_ss_cli_status : fails request ID  = %d", RequestId);
+                               _ciss_get_error_from_tapi_error(&error_code, err);
+                               return error_code;
+                       }
+               }
+               break;
+       case registerPassword:
+               DBG("registerPassword");
+               /* password registration request */
+               /* check for too short password and mismatch password */
+               if (CISS_MAX_PASSWORD_LEN > strlen(mmi_ctx->ss_password) ||
+                   CISS_MAX_PASSWORD_LEN > strlen(mmi_ctx->ss_new_password) ||
+                   CISS_MAX_PASSWORD_LEN > strlen(mmi_ctx->ss_new_password2)) {
+                       /* too short password */
+                       DBG("\n [CISS-ENGINE] Too short password");
+                       error_code = CISS_ERR_CB_PWD_TOO_SORT;
+                       return error_code;
+               }
+
+               err = tel_change_ss_barring_password(mmi_ctx->ss_password, mmi_ctx->ss_new_password, mmi_ctx->ss_new_password2, &RequestId);
+               if (err != TAPI_API_SUCCESS) {
+                       DBG("\n [CISS-ENGINE] tel_change_ss_barring_password call request ID = %d", RequestId);
+                       DBG("\n [CISS-ENGINE] tel_change_ss_barring_password call fails g_err_code = %x", err);
+                       _ciss_get_error_from_tapi_error(&error_code, err);
+                       return error_code;
+               }
+               break;
+       case processUnstructuredSS_Request:
+               DBG("processUnstructuredSS_Request");
+               memset(&stUssdRecord, 0, sizeof(TelSsUssdMsgInfo_t));
+               stUssdRecord.UssdStringLength = strlen(mmi_ctx->user_string);
+
+               _ciss_strcpy(stUssdRecord.szUssdString, sizeof(stUssdRecord.szUssdString), (char *)mmi_ctx->user_string);
+
+               DBG("\n [CISS-ENGINE] string_length = %d, stUssdRecord.ussd_string = %s", stUssdRecord.UssdStringLength, stUssdRecord.szUssdString);
+
+               err = tel_send_ss_ussd_request(&stUssdRecord, &RequestId);
+               if (err != TAPI_API_SUCCESS) {
+                       DBG("\n [CISS-ENGINE] tel_send_ss_ussd_request call fails g_err_code = %x", err);
+                       DBG("\n [CISS-ENGINE] tel_send_ss_ussd_request :call fails request ID   = %d", RequestId);
+                       _ciss_get_error_from_tapi_error(&error_code, err);
+                       return error_code;
+               }
+               break;
+       default:
+               error_code = CISS_ERR_UNKNOWN;
+               DBG("\n [CISS-ENGINE] Invalid Parsed opcode = %d",
+                   mmi_ctx->opcode);
+
+               break;
+       }
+
+#if 0
+#ifndef CF_TEST
+       /* Because tapi sends the CF no reply data for All CF and All conditional CF , we have to make a result flavor with requested data here */
+       if (mmi_ctx->ss_type == TAPI_SS_TYPE_FORWARDING) {
+               memset(&this->ss_result_string, 0, sizeof(ciss_result_t));
+               _ciss_get_forward_flavor_type(mmi_ctx->ss_flavor, &this->ss_result_string.szFlavor);
+
+               if (opcode == eraseSS) {
+                       this->ss_req_data.telecommSvc = mmi_ctx->tapi_bsg;
+                       this->ss_req_data.service = CISS_SERVICE_DIVERTING;
+                       this->ss_req_data.flavor = mmi_ctx->ss_flavor;
+                       this->ss_req_data.action = CISS_ACTION_DEACTIVATE;
+                       DBG("\n [CISS-ENGINE] this->ss_req_data.action : %d\n", this->ss_req_data.action);
+                       DBG("\n [CISS-ENGINE] this->ss_req_data.flavor : %d\n", this->ss_req_data.flavor);
+                       DBG("\n [CISS-ENGINE] this->ss_req_data.telecommSvc : %d\n", this->ss_req_data.telecommSvc);
+                       DBG("\n [CISS-ENGINE] this->ss_req_data.service : %d\n", this->ss_req_data.service);
+               }
+
+               DBG("\n [CISS-ENGINE] Forwarding: Requested ss_flavor =%d\n", this->ss_result_string.szFlavor);
+       } else if (mmi_ctx->ss_type == TAPI_SS_TYPE_BARRING) {
+               memset(&this->ss_result_string, 0, sizeof(ciss_result_t));
+               _ciss_get_barring_flavor_type(mmi_ctx->ss_flavor, &this->ss_result_string.szFlavor);
+
+               DBG("\n [CISS-ENGINE] Barring: Requested ss_flavor =%d\n", this->ss_result_string.szFlavor);
+       }
+#endif
+#endif
+       DBG("Leave");
+       return error_code;
+}
+
+int _ciss_on_tapi_sat_ss_event(const TelTapiEvent_t *event, void *data)
+{
+       DBG("Enter");
+       retv_if(event == NULL, -1);
+       retv_if(data == NULL, -1);
+
+       int ret = -1;
+       struct appdata *ad = (struct appdata *)data;
+
+       DBG("event type=0x%x status=0x%x pDataLen=%d is_sat=%d",event->EventType, event->Status, event->pDataLen, ad->is_sat_request);
+
+       if (ad->popup) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+
+       TelSatSendSsIndSsData_t send_ss_info;
+       if (event->pDataLen > 0) {
+               memcpy(&send_ss_info, event->pData, sizeof(TelSatSendSsIndSsData_t));
+
+               if (send_ss_info.ssStringLen > 0) {
+                       ciss_err_t ciss_err_code;
+                       ad->is_sat_request = EINA_TRUE;
+                       ad->rel_comp_msg_len = 0;
+                       ad->cmd_id = send_ss_info.commandId;
+                       ciss_mmi_context_t      mmi_ctx;
+                       ciss_err_code = _ciss_parse_req_string((char *)send_ss_info.ssString, &mmi_ctx);
+
+                       if (ciss_err_code == CISS_ERR_NONE) {
+                               ciss_err_code = _ciss_send_tapi_request(&mmi_ctx);
+                               ret = 0;
+                       } else {
+                               TelSatAppsRetInfo_t app_ret_info;
+                               app_ret_info.commandId = ad->cmd_id;
+                               app_ret_info.commandType = TAPI_SAT_CMD_TYPE_SEND_SS;
+
+                               app_ret_info.appsRet.sendSs.resp = TAPI_SAT_R_NETWORK_UNABLE_TO_PROCESS_COMMAND;
+                               app_ret_info.appsRet.sendSs.ssString.stringLen = 0;
+                               ret = tel_send_sat_app_exec_result(&app_ret_info);
+                               elm_exit();
+                       }
+               }
+       }
+       DBG("Leave");
+       return ret;
+}
+
+int _ciss_on_tapi_sat_ussd_event(const TelTapiEvent_t *event, void *data)
+{
+       DBG("Enter");
+       retv_if(event == NULL, -1);
+       retv_if(data == NULL, -1);
+
+       int ret = -1;
+       struct appdata *ad = (struct appdata *)data;
+
+       DBG("event type=0x%x status=0x%x pDataLen=%d is_sat=%d", event->EventType, event->Status, event->pDataLen, ad->is_sat_request);
+
+       if (ad->popup) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+
+       TelSatSendUssdIndUssdData_t send_ussd_info;
+       if (event->pDataLen > 0) {
+               memcpy(&send_ussd_info, event->pData, sizeof(TelSatSendUssdIndUssdData_t));
+
+               if (send_ussd_info.ussdStringLen > 0) {
+                       int req_id;
+                       ad->is_sat_request = EINA_TRUE;
+                       ad->cmd_id = send_ussd_info.commandId;
+                       TelSsUssdMsgInfo_t ussd_info;
+                       ussd_info.UssdStringLength = send_ussd_info.ussdStringLen;
+                       if (ussd_info.UssdStringLength >0)
+                               memcpy(&ussd_info.szUssdString, send_ussd_info.ussdString, ussd_info.UssdStringLength);
+                       ret = tel_send_ss_ussd_request(&ussd_info, &req_id);
+               }
+       }
+       DBG("Leave, return=%d", ret);
+       return ret;
+}
+
+int _ciss_on_tapi_ss_rel_complete_noti(const TelTapiEvent_t *event, void *data)
+{
+       DBG("Enter");
+       retv_if(event == NULL, -1);
+       retv_if(data == NULL, -1);
+
+       struct appdata *ad = (struct appdata *)data;
+       TelSsRelCompMsgInfo_t rel_comp_info;
+
+       DBG("event type=0x%x status=0x%x pDataLen=%d is_sat=%d",event->EventType, event->Status, event->pDataLen, ad->is_sat_request);
+       ad->rel_comp_msg_len = 0;
+
+       if (ad->is_sat_request == EINA_TRUE) {
+               if (event->pDataLen > 0) {
+                       memcpy(&rel_comp_info, event->pData, event->pDataLen);
+                       if (rel_comp_info.RelCompMsgLen > 0) {
+                               memcpy(ad->rel_comp_msg, rel_comp_info.szRelCompMsg, rel_comp_info.RelCompMsgLen);
+                               ad->rel_comp_msg_len = rel_comp_info.RelCompMsgLen;
+                       }
+               }
+       }
+       return 0;
+}
+
+int _ciss_on_tapi_ss_event(const TelTapiEvent_t *event, void *data)
+{
+       DBG("Enter");
+       retv_if(event == NULL, -1);
+       retv_if(data == NULL, -1);
+
+       struct appdata *ad = (struct appdata *)data;
+       TelSsInfo_t ss_info;
+       int ret = -1;
+
+       DBG("event type=0x%x status=0x%x pDataLen=%d is_sat=%d", event->EventType, event->Status, event->pDataLen, ad->is_sat_request);
+
+       if (ad->popup) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+
+       if (ad->is_sat_request == EINA_TRUE) {
+               TelSatAppsRetInfo_t app_ret_info;
+               app_ret_info.commandId = ad->cmd_id;
+               app_ret_info.commandType = TAPI_SAT_CMD_TYPE_SEND_SS;
+
+               if (event->Status == TAPI_SS_SUCCESS) {
+                       app_ret_info.appsRet.sendSs.resp = TAPI_SAT_R_SUCCESS;
+
+                       if (ad->rel_comp_msg_len >0) {
+                               memcpy(app_ret_info.appsRet.sendSs.ssString.string, ad->rel_comp_msg, ad->rel_comp_msg_len);
+                               app_ret_info.appsRet.sendSs.ssString.stringLen = ad->rel_comp_msg_len;
+                       } else
+                               app_ret_info.appsRet.sendSs.ssString.stringLen = 0;
+               } else {
+                       app_ret_info.appsRet.sendSs.resp = TAPI_SAT_R_SS_RETURN_ERROR;
+                       app_ret_info.appsRet.sendSs.ssCause = event->Status;
+               }
+               ret = tel_send_sat_app_exec_result(&app_ret_info);
+
+               elm_exit();
+       } else {
+               /* create window */
+               Evas_Object *content;
+
+               DBG("win=0x%p main=0x%p",ad->win_main, ad->layout_main);
+
+               if (ad->win_main == NULL) {
+                       Evas_Object *win;
+                       win = _ciss_create_win(PACKAGE);
+                       ad->win_main = win;
+                       retv_if(ad->win_main == NULL, -1);
+                       ad->end_key_event_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _ciss_on_end_key_down, NULL);
+                       evas_object_show(win);
+               }
+
+               DBG("win=0x%p main=0x%p", ad->win_main, ad->layout_main);
+
+               if (event->Status == TAPI_SS_SUCCESS) {
+                       if (ad->bg == NULL) {
+                               ad->bg = _ciss_create_bg(ad->win_main);
+                               retv_if(ad->bg == NULL, -1);
+                       }
+
+                       if (ad->layout_main == NULL) {
+                               ad->layout_main = _ciss_create_layout_main(ad->win_main);
+                               retv_if(ad->layout_main== NULL, -1);
+                       }
+                       DBG("win=0x%p main=0x%p", ad->win_main, ad->layout_main);
+
+                       if (event->pDataLen > 0) {
+                               memcpy(&ss_info, event->pData, sizeof(TelSsInfo_t));
+                               if (event->EventType == TAPI_EVENT_SS_CLI_QUERYSTATUS_CNF &&
+                                       ss_info.SsType == TAPI_SS_TYPE_BARRING) {
+                                       ss_info.SsType = TAPI_SS_TYPE_IDENTIFICATION;
+                               }
+                               content = (Evas_Object *)_ciss_create_ss_resp_view(ad->layout_main, &ss_info, ad);
+                       } else {
+                               content = (Evas_Object *)_ciss_create_ss_resp_view(ad->layout_main, NULL, ad);
+                       }
+                       retv_if(content == NULL, -1);
+                       elm_object_part_content_set(ad->layout_main, "elm.swallow.content", content);
+               } else {
+                       ciss_err_t ciss_err;
+                       _ciss_get_error_from_tapi_error(&ciss_err, event->Status);
+                       _ciss_create_error_popup(ad->win_main, ciss_err, 2.0, ad);
+               }
+
+               ret = 0;
+       }
+
+       DBG("Leave");
+       return ret;
+}
+
+int _ciss_on_tapi_ussd_event(const TelTapiEvent_t *event, void *data)
+{
+       DBG("Enter");
+       retv_if(event == NULL, -1);
+       retv_if(data == NULL, -1);
+
+       struct appdata *ad = (struct appdata *)data;
+       TelSsUssdMsgIndInfo_t ussd_info;
+       int ret = -1;
+
+       if (ad->popup) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+
+       DBG("event type=0x%x status=0x%x pDataLen=%d is_sat=%d", event->EventType, event->Status, event->pDataLen, ad->is_sat_request);
+       if (ad->is_sat_request == EINA_TRUE)
+       {
+               TelSatAppsRetInfo_t app_ret_info;
+               app_ret_info.commandId = ad->cmd_id;
+               app_ret_info.commandType = TAPI_SAT_CMD_TYPE_SEND_USSD;
+
+               if (event->Status == TAPI_SS_SUCCESS) {
+                       if (event->pDataLen > 0)
+                               memcpy(&ussd_info, event->pData, sizeof(TelSsUssdMsgIndInfo_t));
+
+                       app_ret_info.appsRet.sendUssd.resp = TAPI_SAT_R_SUCCESS;
+                       app_ret_info.appsRet.sendUssd.ussdString.stringLen = ussd_info.UssdInfo.UssdStringLength;
+                       if (app_ret_info.appsRet.sendUssd.ussdString.stringLen > 0)
+                               memcpy(app_ret_info.appsRet.sendUssd.ussdString.string, ussd_info.UssdInfo.szUssdString, ussd_info.UssdInfo.UssdStringLength);
+               } else {
+                       app_ret_info.appsRet.sendUssd.resp = TAPI_SAT_R_USSD_RETURN_ERROR;
+                       app_ret_info.appsRet.sendUssd.ssCause = event->Status;
+               }
+
+               tel_send_sat_app_exec_result(&app_ret_info);
+               ret = 0;
+               elm_exit();
+       } else {
+               /* create window */
+               Evas_Object *content;
+
+               if (ad->win_main == NULL) {
+                       Evas_Object *win;
+                       win = _ciss_create_win(PACKAGE);
+                       retv_if(win == NULL, -1);
+                       ad->win_main = win;
+                       evas_object_show(win);
+                       ad->end_key_event_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _ciss_on_end_key_down, NULL);
+               }
+
+               if (event->Status == TAPI_SS_SUCCESS) {
+                       if (event->pDataLen > 0)
+                               memcpy(&ussd_info, event->pData, sizeof(TelSsUssdMsgIndInfo_t));
+                       else    {
+                               DBG("Telephony USSD data is empty");
+                               return -1;
+                       }
+
+                       if (ad->bg == NULL) {
+                               ad->bg = _ciss_create_bg(ad->win_main);
+                               retv_if(ad->bg == NULL, -1);
+                       }
+
+                       if (ad->layout_main == NULL) {
+                               Evas_Object *lo;
+                               lo = _ciss_create_layout_main(ad->win_main);
+                               retv_if(lo == NULL, -1);
+                               ad->layout_main = lo;
+                       }
+                       content = (Evas_Object *)_ciss_create_ussd_view(ad->layout_main, &ussd_info, ad);
+                       retv_if(content == NULL, -1);
+                       elm_object_part_content_set(ad->layout_main, "elm.swallow.content", content);
+               } else {
+                       ciss_err_t ciss_err;
+                       _ciss_get_error_from_tapi_error(&ciss_err, event->Status);
+                       _ciss_create_error_popup(ad->win_main, ciss_err, 2.0, ad);
+               }
+               ret = 0;
+       }
+
+       DBG("Leave");
+       return ret;
+}
+
diff --git a/src/ciss-ussd.c b/src/ciss-ussd.c
new file mode 100755 (executable)
index 0000000..bcbb39f
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include "ciss-common.h"
+#include "ciss-ussd.h"
+#include "ciss-debug.h"
+#include "ciss-string.h"
+#include "ciss-respnd.h"
+#include "ciss-widget.h"
+#include <TapiEvent.h>
+
+static int __ciss_get_ussd_string(char *ss_result_string /*out */, TelSsUssdMsgIndInfo_t *ussd_info /*in */)
+{
+       DBG("Enter");
+
+       char *ptr;
+       char *temp_ptr;
+
+       if (ussd_info->UssdInfo.UssdStringLength > 0) {
+               ptr = strtok_r(ussd_info->UssdInfo.szUssdString, "\n", &temp_ptr);
+               snprintf(ss_result_string, CISS_MMI_MAX_USSD_RESP_STRING, "%s", ptr);
+
+               while ((ptr = strtok_r(NULL, "\n", &temp_ptr))) {
+                       char temp_str[CISS_MMI_MAX_USSD_RESP_STRING];
+                       strncpy(temp_str, ss_result_string, CISS_MMI_MAX_USSD_RESP_STRING - 1);
+                       snprintf(ss_result_string, CISS_MMI_MAX_USSD_RESP_STRING, "%s<br>%s", temp_str, ptr);
+               }
+       } else
+               strncpy(ss_result_string, "", CISS_MMI_MAX_USSD_RESP_STRING - 1);
+
+       return 0;
+}
+
+void _ciss_ussd_quit_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DBG("Enter");
+
+       struct appdata *ad = (struct appdata *)data;
+       int request_id = ad->request_id;
+       memset(ad->c_item, 0, sizeof(ad->c_item));
+
+       if (ad->ussd_action_require) {
+               DBG("callig ussd_cancel \n");
+               tel_send_ss_ussd_cancel(&request_id);
+       }
+
+       elm_exit();
+}
+
+static void __ciss_respnd_cb(void *data, Evas_Object *obj, void *event_info)
+{
+
+       DBG("Enter");
+
+       struct appdata *ad = (struct appdata *)data;
+       _ciss_create_respond_view(ad);
+}
+
+Evas_Object *_ciss_create_ussd_view(Evas_Object *parent, TelSsUssdMsgIndInfo_t *ussd_info, void *data)
+{
+       DBG("Enter");
+       retv_if(parent == NULL, NULL);
+       retv_if(ussd_info == NULL, NULL);
+       retv_if(data == NULL, NULL);
+
+       struct appdata *ad = (struct appdata *)data;
+       char ussd_string[CISS_MMI_MAX_USSD_RESP_STRING] = { };
+       __ciss_get_ussd_string(ussd_string, ussd_info);
+       DBG("[CISS-MMI] ussd_string = %s", ussd_string);
+
+       Evas_Object *nf;
+       Evas_Object *l_button;
+       Evas_Object *cbar = NULL;
+       Elm_Object_Item *navi_it = NULL;
+
+       nf = elm_naviframe_add(parent);
+       retv_if(nf == NULL, NULL);
+       ad->nf = nf;
+       ad->ussd_action_require = 0;
+
+       Evas_Object *genlist =
+               _ciss_create_result_genlist(ussd_string, CISS_MMI_MAX_USSD_RESP_STRING, nf, ad);
+       retv_if(NULL == genlist, NULL);
+
+       l_button = elm_button_add(nf);
+       evas_object_smart_callback_add(l_button, "clicked",
+               _ciss_ussd_quit_cb, ad);
+
+       navi_it = elm_naviframe_item_push(nf, CISS_STR_INFORMATION,
+               l_button, NULL, genlist, "1line");
+       elm_object_style_set(l_button, "naviframe/back_btn/default");
+
+       if (ussd_info->IndType == TAPI_USSD_IND_ACTION_REQUIRE) {
+               DBG("require action");
+               cbar = _ciss_create_navi_control_bar(nf,
+                       CISS_STR_REPLY, __ciss_respnd_cb,
+                       NULL, NULL,
+                       ad, navi_it,
+                       ad->c_item);
+               retv_if(cbar == NULL, NULL);
+               ad->ussd_action_require = 1;
+       }
+
+       evas_object_show(nf);
+       DBG("Leave");
+
+       return nf;
+}
+
diff --git a/src/ciss-util.c b/src/ciss-util.c
new file mode 100755 (executable)
index 0000000..2e62b9b
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include "ciss-util.h"
+#include "ciss-debug.h"
+#include <string.h>
+
+char *_ciss_strcpy(char *pBuffer, int nBufCount, const char *pszString)
+{
+       if ((nBufCount - 1) >= (int)strlen(pszString))
+               strcpy(pBuffer, pszString);
+       else {
+               DBG("\n [CISS-ENGINE] _ciss_strcpy:short of buffer..BufCount=%d, strlen=%d, str=%s\n", nBufCount, strlen(pszString), pszString);
+               strncpy(pBuffer, pszString, (nBufCount - 1));
+               pBuffer[nBufCount - 1] = '\0';
+       }
+       return pBuffer;
+}
+
+void _ciss_util_swap(char *str1, char *str2)
+{
+       unsigned char tmp = 0;
+
+       tmp = *str1;
+       *str1 = *str2;
+       *str2 = tmp;
+}
+
diff --git a/src/ciss-widget.c b/src/ciss-widget.c
new file mode 100755 (executable)
index 0000000..ae49157
--- /dev/null
@@ -0,0 +1,361 @@
+/*
+ * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved 
+ *
+ * This file is part of <ciss>
+ * Written by <Sungjoon Won> <sungjoon.won@samsung.com>, <Jungmin Kim> <jm15.kim@samsung.com>
+ *
+ * PROPRIETARY/CONFIDENTIAL
+ *
+ * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information").
+ * You shall not disclose such Confidential Information and shall use it only in accordance
+ * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS.
+ * SAMSUNG make no representations or warranties about the suitability of the software,
+ * either express or implied, including but not limited to the implied warranties of merchantability,
+ * fitness for a particular purpose, or non-infringement.
+ * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using,
+ * modifying or distributing this software or its derivatives.
+ *
+ */
+
+#include "ciss-common.h"
+#include "ciss-widget.h"
+#include "ciss-util.h"
+#include <utilX.h>
+#include <Ecore_X.h>
+
+#define CISS_BUF_LEN           128
+#define CISS_DEF_FSIZE         (24)
+#define CISS_DEF_FNAME         "HelveN_Asia"
+
+Evas_Object *_ciss_create_popup(Evas_Object *parent, char *msg)
+{
+       DBG("Enter");
+       retv_if(msg == NULL, NULL);
+       retv_if(strlen(msg) == 0, NULL);
+       Evas_Object *popup;
+       popup = elm_popup_add(parent);
+       elm_object_part_text_set(popup, "title,text", CISS_STR_INFORMATION);
+       elm_popup_timeout_set(popup, 1.5);
+       elm_object_text_set(popup, msg);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       return popup;
+}
+
+static void __ciss_resp_timeout_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DBG("Enter");
+       struct appdata *ad = (struct appdata *)data;
+
+       _ciss_create_error_popup(ad->win_main, CISS_ERR_UNKNOWN, 2.0, ad);
+}
+
+static void __ciss_err_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       DBG("Enter");
+       struct appdata *ad = (struct appdata *)data;
+
+       evas_object_del(obj);
+       ad->popup = NULL;
+       elm_exit();
+}
+
+Evas_Object *_ciss_create_error_popup(Evas_Object *parent, ciss_err_t ciss_error, double t_timeout, void *data)
+{
+       DBG("Enter");
+       Evas_Object *popup;
+       struct appdata *ad = (struct appdata *)data;
+       if (ciss_error == CISS_ERR_NONE)
+               return NULL;
+       
+       if (ad->popup) {
+               evas_object_del(ad->popup);
+               ad->popup = NULL;
+       }
+
+       char strmsg[100];
+       switch (ciss_error) {
+       case CISS_ERR_UNKNOWN_SUBSCRIBER:
+       case CISS_ERR_BEARER_NOT_PROVISIONED:
+       case CISS_ERR_TELESERVICE_NOT_PROVISIONED:
+       case CISS_ERR_CALL_BARRED:
+       case CISS_ERR_ERR_STATUS:
+       case CISS_ERR_NOT_AVAIL:
+       case CISS_ERR_SUBSCRIPTION_VIOLATION:
+       case CISS_ERR_INCOMPATIBILITY:
+       case CISS_ERR_FACILITY_NOT_SUPPORT:
+       case CISS_ERR_SYS_FAILURE:
+       case CISS_ERR_DATA_MISSING:
+       case CISS_ERR_UNEXPECTED_DATA:
+       case CISS_ERR_MPTY_PARTICIPANTS_EXCEED:
+       case CISS_ERR_RESOURCE_NOT_AVAIL:
+       case CISS_ERR_UNKNOWN:
+               snprintf(strmsg, 100, "%s", CISS_STR_SERVICE_UNAVAILABLE);
+               break;
+       case CISS_ERR_ILLEGAL_SS_OPER:
+               snprintf(strmsg, 100, "%s", CISS_STR_SERVICE_NOT_AUTHORISED);
+               break;
+       case CISS_ERR_PW_REGIST_FAIL:
+       case CISS_ERR_NEGATIVE_PW_CHECK:
+               snprintf(strmsg, 100, "%s", CISS_STR_INVALID_PASSWORD);
+               break;
+       case CISS_ERR_PW_ATTEMPS_VIOLATION:     /**<numberOfPW_AttemptsViolation*/
+               snprintf(strmsg, 100, "%s", CISS_STR_PASSWORD_BLOCKED);
+               break;
+       case CISS_ERR_NETWORK_API_FAILED:       /**<Telephony API call failed*/
+       case CISS_ERR_DIVERT_TO_EMERGENCY_BLOCKED:      /**<Call diverting to an emergency number not allowed*/
+               snprintf(strmsg, 100, "%s", CISS_STR_REJECTED_BY_NETWORK);
+               break;
+        /* Call barring password mismatch errors */
+       case CISS_ERR_CB_PWD_TOO_SORT:  /**<Password is too short - less than 4 characters*/
+       case CISS_ERR_CB_PWD_MISMATCH:  /**<Password do not match - unequal password*/
+       case CISS_ERR_CB_PWD_TOO_LONG:  /**<Password is too long - greater than 4 characters*/
+               snprintf(strmsg, 100, "%s", CISS_STR_INVALID_PASSWORD);
+               break;
+       default:
+               snprintf(strmsg, 100, "%s", CISS_STR_NETWORK_ERROR);
+               break;
+       }
+
+       popup = elm_popup_add(parent);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_popup_timeout_set(popup, t_timeout);
+       elm_object_text_set(popup, strmsg);
+       elm_object_part_text_set(popup, "title,text", CISS_STR_INFORMATION);
+       evas_object_smart_callback_add(popup, "timeout", __ciss_err_cb, ad);
+       evas_object_smart_callback_add(popup, "block,clicked", __ciss_err_cb, ad);
+
+       evas_object_show(popup);
+       ad->popup = popup;
+
+       return popup;
+}
+
+Evas_Object *_ciss_create_noti_popup(Evas_Object *parent, char *strtitle, char *strmsg, double t_timeout, void *data)
+{
+       DBG("Enter");
+       Evas_Object *popup;
+       Evas_Object *progressbar;
+       retv_if(parent == NULL, NULL);
+       popup = elm_popup_add(parent);
+
+       elm_object_part_text_set(popup, "title,text", strtitle);
+
+       progressbar = elm_progressbar_add(popup);
+       elm_object_style_set(progressbar, "pending_list");
+       elm_progressbar_horizontal_set(progressbar, EINA_TRUE);
+       evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_progressbar_pulse(progressbar, EINA_TRUE);
+       evas_object_show(progressbar);
+
+       elm_object_content_set(popup, progressbar);
+       elm_popup_timeout_set(popup, t_timeout);
+       evas_object_smart_callback_add(popup, "timeout", __ciss_resp_timeout_cb, data);
+
+       evas_object_show(popup);
+
+       return popup;
+}
+
+static void __ciss_win_del(void *data, Evas_Object *obj, void *event)
+{
+       elm_exit();
+}
+
+Eina_Bool _ciss_on_end_key_down(void *data, int type, void *event)
+{
+       DBG("Enter");
+       Ecore_Event_Key *ev = event;
+
+       if (!strcmp(ev->keyname, KEY_END))
+               elm_exit();
+
+       return EXIT_FAILURE;
+}
+
+Evas_Object *_ciss_create_win(const char *name)
+{
+       DBG("Enter");
+       Evas_Object *eo;
+       int w, h;
+       eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+       retv_if(eo == NULL, NULL);
+
+       if (eo) {
+               elm_win_alpha_set(eo, EINA_TRUE);
+               elm_win_title_set(eo, name);
+               elm_win_borderless_set(eo, EINA_TRUE);
+               elm_win_raise(eo);
+               elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
+               evas_object_smart_callback_add(eo, "delete,request", __ciss_win_del, NULL);
+               ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+               DBG("win w=%d h=%d", w, h);
+               evas_object_resize(eo, w, h);
+       }
+
+       return eo;
+}
+
+Evas_Object *_ciss_create_layout_main(Evas_Object *parent)
+{
+       DBG("Enter");
+
+       Evas_Object *layout;
+       retv_if(parent == NULL, NULL);
+
+       layout = elm_layout_add(parent);
+       retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n");
+
+       elm_layout_theme_set(layout, "layout", "application", "default");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(parent, layout);
+       evas_object_show(layout);
+
+       return layout;
+}
+
+Evas_Object *_ciss_create_bg(Evas_Object *parent)
+{
+       retv_if(parent == NULL, NULL);
+
+       Evas_Object *bg = elm_bg_add(parent);
+       retvm_if(bg == NULL, NULL, "Failed elm_bg_add.\n");
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(parent, bg);
+       evas_object_show(bg);
+
+       return bg;
+}
+
+Evas_Object *_ciss_create_navi_control_bar(Evas_Object *parent,
+                       char *label1, Evas_Smart_Cb cb1,
+                       char *label2, Evas_Smart_Cb cb2,
+                       void *data, Elm_Object_Item *navi_it,
+                       Elm_Object_Item ** c_item)
+{
+       retv_if(NULL == parent, NULL);
+       Evas_Object *toolbar = elm_toolbar_add(parent);
+       Elm_Object_Item *item = NULL;
+
+       retv_if(toolbar == NULL, NULL);
+       retv_if(label1 == NULL, NULL);
+
+       elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+
+
+       if (label2) {
+               item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+               elm_object_item_disabled_set(item, EINA_TRUE);
+               c_item[0] = elm_toolbar_item_append(toolbar,
+                       NULL, label1, cb1, data);
+               item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+               elm_object_item_disabled_set(item, EINA_TRUE);
+               c_item[1] = elm_toolbar_item_append(toolbar,
+                       NULL, label2, cb2, data);
+       } else {
+               item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+               elm_object_item_disabled_set(item, EINA_TRUE);
+               item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+               elm_object_item_disabled_set(item, EINA_TRUE);
+               item = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL);
+               elm_object_item_disabled_set(item, EINA_TRUE);
+
+               c_item[0] = elm_toolbar_item_append(toolbar,
+                       NULL, label1, cb1, data);
+       }
+
+       elm_object_item_part_content_set(navi_it, "controlbar", toolbar);
+       return toolbar;
+}
+
+Evas_Object *_cst_create_title_btn(Evas_Object *parent,
+               const char *text, Evas_Smart_Cb func, void *data)
+{
+       Evas_Object *btn = elm_button_add(parent);
+       if (!btn) return NULL;
+       elm_object_style_set(btn, "naviframe/title/default");
+       elm_object_text_set(btn, text);
+       evas_object_smart_callback_add(btn, "clicked", func, data);
+       return btn;
+}
+
+static void __ciss_trans_finished(void *data, Evas_Object *obj, void *event_info)
+{
+       ret_if(NULL == obj);
+       elm_naviframe_prev_btn_auto_pushed_set(obj, EINA_TRUE);
+       evas_object_smart_callback_del(obj, "transition,finished", __ciss_trans_finished);
+}
+
+void _ciss_remove_naviframe(Evas_Object *nf)
+{
+       ret_if(NULL == nf);
+       elm_naviframe_prev_btn_auto_pushed_set(nf, EINA_FALSE);
+       evas_object_smart_callback_add(nf, "transition,finished",
+               __ciss_trans_finished, NULL);
+}
+
+static char *__ciss_gl_label_get_result(void *data, Evas_Object *obj, const char *part)
+{
+       char *label = (char *)data;
+
+       if (label)
+               return strdup(label);
+       else
+               return NULL;
+}
+
+static void __ciss_gl_del_result(void *data, Evas_Object *obj)
+{
+       char *label = (char *)data;
+       if(label)
+               free(label);
+
+       return;
+}
+
+Evas_Object * _ciss_create_result_genlist(const char *result_str, int str_len, Evas_Object *nf, void *data)
+{
+       Evas_Object *genlist = elm_genlist_add(nf);
+       retv_if(NULL == genlist, NULL);
+       retv_if(NULL == data, NULL);
+
+       struct appdata *ad = (struct appdata *)data;
+       ad->itc_multi_line->item_style = "multiline/1text";
+       ad->itc_multi_line->func.text_get = __ciss_gl_label_get_result;
+       ad->itc_multi_line->func.content_get = NULL;
+       ad->itc_multi_line->func.state_get = NULL;
+       ad->itc_multi_line->func.del = __ciss_gl_del_result;
+
+       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+       char *label = calloc(str_len, sizeof(char));
+       retv_if(label == NULL, NULL);
+
+       strncpy(label, result_str, str_len - 1);
+       Elm_Object_Item *item = elm_genlist_item_append(genlist, ad->itc_multi_line,
+               (void *)label, NULL, ELM_GENLIST_ITEM_NONE,
+               NULL, NULL);
+       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+       return genlist;
+}
+
+void _ciss_geinlist_item_class_new(void *data)
+{
+       ret_if(data == NULL);
+
+       struct appdata *ad = (struct appdata *)data;
+       ad->itc_ime = elm_genlist_item_class_new();
+       ad->itc_multi_line = elm_genlist_item_class_new();
+}
+
+void _ciss_geinlist_item_class_free(void *data)
+{
+       ret_if(data == NULL);
+
+       struct appdata *ad = (struct appdata *)data;
+       if (ad->itc_ime)
+               elm_genlist_item_class_free(ad->itc_ime);
+       if (ad->itc_multi_line)
+               elm_genlist_item_class_free(ad->itc_multi_line);
+}