Re #1655: Initial implementation of pjsua CLI app for Symbian.



git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@4477 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjsip-apps/src/pjsua/symbian/application.uidesign b/pjsip-apps/src/pjsua/symbian/application.uidesign
new file mode 100644
index 0000000..f2bf30e
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/application.uidesign
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<designerData version="1.1.0">
+  <componentManifest>
+    <manifestEntry id="com.nokia.sdt.series60.CAknApplication" version="1.1.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.NonLayoutBase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CommonBase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CAknDocument" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CAknViewAppUi" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CAknAppUi" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CAknAppUiBase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.DesignTimeContainer" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.StatusPane" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.ControlBase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.StatusPaneCaption" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.StatusPaneTitleBase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CBA" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CBABase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.AvkonViewReference" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.DesignReference" version="1.0.0"/>
+  </componentManifest>
+  <property id="com.nokia.sdt.symbian.dm.RESOURCE_DIRECTORY_ID">data</property>
+  <property id="com.nokia.sdt.component.symbian.version">3.2.0</property>
+  <property id="com.nokia.sdt.component.symbian.vendor">com.nokia.series60</property>
+  <property id="com.nokia.sdt.symbian.dm.COMPONENT_PROVIDER">com.nokia.sdt.component.symbian.Symbian-Provider</property>
+  <property id="com.nokia.sdt.symbian.dm.INCLUDE_DIRECTORY_ID">inc</property>
+  <property id="com.nokia.sdt.symbian.dm.ROOT_CONTAINER">pjsuaAppUi</property>
+  <property id="com.nokia.sdt.symbian.dm.SOURCE_DIRECTORY_ID">src</property>
+  <property id="com.nokia.sdt.symbian.dm.ROOT_APPLICATION_NAME">pjsua</property>
+  <property id="com.nokia.sdt.symbian.dm.SOURCEGEN_PROVIDER">com.nokia.sdt.sourcegen.Symbian-Provider</property>
+  <property id="com.nokia.sdt.symbian.dm.BUILD_DIRECTORY_ID">group</property>
+  <component id="com.nokia.sdt.series60.CAknApplication">
+    <property id="className">CpjsuaApplication</property>
+    <property id="documentBase">pjsua</property>
+    <property id="name">pjsuaApplication</property>
+    <property id="uid">0xE44C2D02</property>
+    <component id="com.nokia.sdt.series60.CAknDocument">
+      <property id="className">CpjsuaDocument</property>
+      <property id="name">pjsuaDocument</property>
+      <component id="com.nokia.sdt.series60.CAknViewAppUi">
+        <property id="initialDesign" type="componentRef">aknViewReference1</property>
+        <property id="className">CpjsuaAppUi</property>
+        <compoundProperty id="location">
+          <property id="x">51</property>
+          <property id="y">44</property>
+        </compoundProperty>
+        <property id="name">pjsuaAppUi</property>
+        <compoundProperty id="size">
+          <property id="width">240</property>
+          <property id="height">320</property>
+        </compoundProperty>
+        <component id="com.nokia.sdt.series60.StatusPane">
+          <compoundProperty id="location">
+            <property id="x">20</property>
+          </compoundProperty>
+          <property id="name">statusPane</property>
+          <compoundProperty id="size">
+            <property id="width">204</property>
+            <property id="height">63</property>
+          </compoundProperty>
+          <component id="com.nokia.sdt.series60.StatusPaneCaption">
+            <property id="shortCaption" type="i18n">STR_pjsuaApplication_5</property>
+            <compoundProperty id="location">
+              <property id="x">56</property>
+            </compoundProperty>
+            <property id="longCaption" type="i18n">STR_pjsuaApplication_4</property>
+            <property id="name">caption</property>
+            <compoundProperty id="size">
+              <property id="width">148</property>
+              <property id="height">43</property>
+            </compoundProperty>
+          </component>
+        </component>
+        <component id="com.nokia.sdt.series60.CBA">
+          <compoundProperty id="location">
+            <property id="y">288</property>
+          </compoundProperty>
+          <compoundProperty id="info">
+            <property id="leftText" type="i18n">STR_pjsuaApplication_1</property>
+            <property id="rightText" type="i18n">STR_pjsuaApplication_2</property>
+            <property id="middleText" type="i18n">STR_pjsuaApplication_3</property>
+            <property id="leftId"></property>
+            <property id="rightId">EAknSoftkeyBack</property>
+            <property id="type">R_AVKON_SOFTKEYS_EXIT</property>
+          </compoundProperty>
+          <property id="name">controlPane</property>
+          <compoundProperty id="size">
+            <property id="width">240</property>
+            <property id="height">32</property>
+          </compoundProperty>
+        </component>
+        <component id="com.nokia.sdt.series60.AvkonViewReference">
+          <property id="filePath">pjsuaContainer.uidesign</property>
+          <compoundProperty id="tabImage"/>
+          <property id="baseName">pjsuaContainer</property>
+          <property id="name">aknViewReference1</property>
+        </component>
+      </component>
+    </component>
+  </component>
+  <stringBundle>
+    <stringTable language="LANG_English">
+      <string id="STR_pjsuaApplication_1"/>
+      <string id="STR_pjsuaApplication_2"/>
+      <string id="STR_pjsuaApplication_3"/>
+      <string id="STR_pjsuaApplication_4">pjsua</string>
+      <string id="STR_pjsuaApplication_5">pjsua</string>
+    </stringTable>
+  </stringBundle>
+  <macroTable/>
+  <sourceMappingState>
+    <resourceMappings>
+      <resourceMapping instanceName="pjsuaAppUi">r_application_pjsua_app_ui</resourceMapping>
+      <resourceMapping instanceName="statusPane">r_application_status_pane</resourceMapping>
+      <resourceMapping instanceName="pjsuaAppUi" rsrcId="localisable_app_info">r_localisable_app_info</resourceMapping>
+      <resourceMapping instanceName="aknViewReference1" rsrcId="tabText">r_application_akn_view_reference1</resourceMapping>
+    </resourceMappings>
+    <enumMappings>
+      <enumMapping instanceName="aknViewReference1" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_VIEW_UID">EPjsuaContainerViewId</enumMapping>
+    </enumMappings>
+    <arrayMappings/>
+  </sourceMappingState>
+  <generatedFiles>
+    <file>src/pjsuaapplication.cpp</file>
+    <file>src/pjsuacontainerview.cpp</file>
+    <file>src/pjsuadocument.cpp</file>
+    <file>inc/pjsuadocument.h</file>
+    <file>inc/pjsuacontainerview.h</file>
+    <file>inc/pjsuaappui.h</file>
+    <file>inc/pjsuaapplication.h</file>
+    <file>src/pjsuaappui.cpp</file>
+    <file>data/pjsua.rss</file>
+    <file>data/pjsuacontainer.rssi</file>
+    <file>inc/pjsua.hrh</file>
+    <file>data/pjsua.loc</file>
+    <file>data/pjsua.l01</file>
+    <file>data/pjsuacontainer.loc</file>
+    <file>data/pjsuacontainer.l01</file>
+  </generatedFiles>
+</designerData>
diff --git a/pjsip-apps/src/pjsua/symbian/data/pjsua.l01 b/pjsip-apps/src/pjsua/symbian/data/pjsua.l01
new file mode 100644
index 0000000..a3855bc
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/data/pjsua.l01
@@ -0,0 +1,14 @@
+/*
+========================================================================
+ Name        : pjsua.l01
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+// localized strings for language: UK English (01)
+#define STR_pjsuaApplication_4 "pjsua"
+#define STR_pjsuaApplication_5 "pjsua"
+#define STR_pjsuaApplication_1 ""
+#define STR_pjsuaApplication_2 ""
+#define STR_pjsuaApplication_3 ""
diff --git a/pjsip-apps/src/pjsua/symbian/data/pjsua.loc b/pjsip-apps/src/pjsua/symbian/data/pjsua.loc
new file mode 100644
index 0000000..c48d6c1
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/data/pjsua.loc
@@ -0,0 +1,11 @@
+/*
+========================================================================
+ Name        : pjsua.loc
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+#ifdef LANGUAGE_01
+#include "pjsua.l01"
+#endif
diff --git a/pjsip-apps/src/pjsua/symbian/data/pjsua.rss b/pjsip-apps/src/pjsua/symbian/data/pjsua.rss
new file mode 100644
index 0000000..4003177
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/data/pjsua.rss
@@ -0,0 +1,46 @@
+/*
+========================================================================
+ Name        : pjsua.rss
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+NAME PJSU
+
+#include <avkon.rsg>
+#include <avkon.rh>
+#include <eikon.rh>
+#include <appinfo.rh>
+#include "pjsua.hrh"
+#include "pjsua.loc"
+
+RESOURCE RSS_SIGNATURE
+	{
+	}
+RESOURCE TBUF
+	{
+	buf = "pjsua";
+	}
+RESOURCE EIK_APP_INFO r_application_pjsua_app_ui
+	{
+	cba = R_AVKON_SOFTKEYS_EXIT;
+	status_pane = r_application_status_pane;
+	}
+RESOURCE STATUS_PANE_APP_MODEL r_application_status_pane
+	{
+	}
+RESOURCE LOCALISABLE_APP_INFO r_localisable_app_info
+	{
+	short_caption = STR_pjsuaApplication_5;
+	caption_and_icon = CAPTION_AND_ICON_INFO
+		{
+		caption = STR_pjsuaApplication_4;
+		number_of_icons = 0;
+		};
+	}
+RESOURCE TBUF r_application_akn_view_reference1
+	{
+	}
+
+#include "pjsuaContainer.rssi"
diff --git a/pjsip-apps/src/pjsua/symbian/data/pjsuaContainer.l01 b/pjsip-apps/src/pjsua/symbian/data/pjsuaContainer.l01
new file mode 100644
index 0000000..792282d
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/data/pjsuaContainer.l01
@@ -0,0 +1,14 @@
+/*
+========================================================================
+ Name        : pjsuaContainer.l01
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+// localized strings for language: UK English (01)
+#define STR_pjsuaContainerView_2 ""
+#define STR_pjsuaContainerView_3 ""
+#define STR_pjsuaContainerView_4 "pjsuaContainer"
+#define STR_pjsuaContainerView_1 ""
+#define STR_pjsuaContainerView_5 "Please wait.."
diff --git a/pjsip-apps/src/pjsua/symbian/data/pjsuaContainer.loc b/pjsip-apps/src/pjsua/symbian/data/pjsuaContainer.loc
new file mode 100644
index 0000000..119c15b
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/data/pjsuaContainer.loc
@@ -0,0 +1,11 @@
+/*
+========================================================================
+ Name        : pjsuaContainer.loc
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+#ifdef LANGUAGE_01
+#include "pjsuaContainer.l01"
+#endif
diff --git a/pjsip-apps/src/pjsua/symbian/data/pjsuaContainer.rssi b/pjsip-apps/src/pjsua/symbian/data/pjsuaContainer.rssi
new file mode 100644
index 0000000..03fc197
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/data/pjsuaContainer.rssi
@@ -0,0 +1,28 @@
+#include "pjsuaContainer.loc"
+
+RESOURCE AVKON_VIEW r_pjsua_container_pjsua_container_view
+	{
+	cba = R_AVKON_SOFTKEYS_EXIT;
+	toolbar = 0;
+	}
+RESOURCE STATUS_PANE_APP_MODEL r_pjsua_container_status_pane
+	{
+	panes =
+		{
+		SPANE_PANE
+			{
+			id = EEikStatusPaneUidTitle;
+			type = EAknCtTitlePane;
+			resource = r_pjsua_container_title_resource;
+			}
+		};
+	}
+RESOURCE TITLE_PANE r_pjsua_container_title_resource
+	{
+	txt = STR_pjsuaContainerView_4;
+	}
+RESOURCE LABEL r_pjsua_container_label1
+	{
+	txt = STR_pjsuaContainerView_5;
+	horiz_align = EEikLabelAlignHCenter;
+	}
diff --git a/pjsip-apps/src/pjsua/symbian/data/pjsua_reg.loc b/pjsip-apps/src/pjsua/symbian/data/pjsua_reg.loc
new file mode 100644
index 0000000..0299c09
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/data/pjsua_reg.loc
@@ -0,0 +1,11 @@
+//  LOCALISATION STRINGS
+
+// Caption string for app.
+#define qtn_caption_string "pjsua"
+
+// Short caption string for app.
+#define qtn_short_caption_string "HW"
+
+#define qtn_loc_resource_file_1 "\\resource\\apps\\pjsua"
+
+// End of File
diff --git a/pjsip-apps/src/pjsua/symbian/data/pjsua_reg.rss b/pjsip-apps/src/pjsua/symbian/data/pjsua_reg.rss
new file mode 100644
index 0000000..e91a00b
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/data/pjsua_reg.rss
@@ -0,0 +1,21 @@
+
+#include <eikon.rh>
+#include <avkon.rsg>
+#include <avkon.rh>
+#include <appinfo.rh>
+#include "pjsua_reg.loc"
+#include <pjsua.rsg>
+
+UID2 KUidAppRegistrationResourceFile
+UID3 0xE44C2D02
+
+RESOURCE APP_REGISTRATION_INFO
+	{
+	app_file="pjsua";
+	localisable_resource_file =  qtn_loc_resource_file_1;
+	localisable_resource_id = R_LOCALISABLE_APP_INFO;
+
+	embeddability=KAppNotEmbeddable;
+	newfile=KAppDoesNotSupportNewFile;
+	}
+
diff --git a/pjsip-apps/src/pjsua/symbian/gfx/list_icon.bmp b/pjsip-apps/src/pjsua/symbian/gfx/list_icon.bmp
new file mode 100644
index 0000000..a874fea
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/gfx/list_icon.bmp
Binary files differ
diff --git a/pjsip-apps/src/pjsua/symbian/gfx/list_icon_mask.bmp b/pjsip-apps/src/pjsua/symbian/gfx/list_icon_mask.bmp
new file mode 100644
index 0000000..e320527
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/gfx/list_icon_mask.bmp
Binary files differ
diff --git a/pjsip-apps/src/pjsua/symbian/gfx/mark_icon.bmp b/pjsip-apps/src/pjsua/symbian/gfx/mark_icon.bmp
new file mode 100644
index 0000000..35571e2
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/gfx/mark_icon.bmp
Binary files differ
diff --git a/pjsip-apps/src/pjsua/symbian/gfx/mark_icon_mask.bmp b/pjsip-apps/src/pjsua/symbian/gfx/mark_icon_mask.bmp
new file mode 100644
index 0000000..dc8744b
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/gfx/mark_icon_mask.bmp
Binary files differ
diff --git a/pjsip-apps/src/pjsua/symbian/gfx/pjsua.bmp b/pjsip-apps/src/pjsua/symbian/gfx/pjsua.bmp
new file mode 100644
index 0000000..c6c2027
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/gfx/pjsua.bmp
Binary files differ
diff --git a/pjsip-apps/src/pjsua/symbian/gfx/qgn_menu_pjsua.svg b/pjsip-apps/src/pjsua/symbian/gfx/qgn_menu_pjsua.svg
new file mode 100644
index 0000000..47da6d7
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/gfx/qgn_menu_pjsua.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">

+<svg baseProfile="tiny" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 88 87.999">

+<g>

+<g>

+<g>

+<g>

+<rect fill="none" width="88" height="87.999"/>

+</g>

+</g>

+<g>

+<linearGradient id="XMLID_7_" gradientUnits="userSpaceOnUse" x1="12.3042" y1="18.3799" x2="63.4113" y2="79.287">

+<stop offset="0" style="stop-color:#B3DDFF"/>

+<stop offset="0.8146" style="stop-color:#084296"/>

+<stop offset="1" style="stop-color:#084296"/>

+</linearGradient>

+<path fill="url(#XMLID_7_)" d="M32.135,7.415L14.363,17.432v23.167c0,0,8.926,15.351,10.468,18.001       c-2.386,1.704-15.44,11.03-15.44,11.03l21.613,12.652c0,0,12.907-9.85,14.71-11.226c1.979,1.109,16.231,9.101,16.231,9.101       l16.664-15.132c0,0-14.066-6.929-16.888-8.318c1.467-3.01,10.531-21.604,10.531-21.604l-22.298-9.59       c0,0-1.486,3.173-2.093,4.467c-2.046-0.88-6.573-2.826-6.573-2.826s-3.713,2.463-5.696,3.778       c-0.327-0.744-0.542-1.233-0.657-1.495c0.007-0.824,0.213-23.72,0.213-23.72L32.135,7.415z"/>

+<linearGradient id="XMLID_8_" gradientUnits="userSpaceOnUse" x1="40.8276" y1="52.1914" x2="16.1997" y2="21.1353">

+<stop offset="0" style="stop-color:#5AA7E0"/>

+<stop offset="1" style="stop-color:#3366CC"/>

+</linearGradient>

+<polygon fill="url(#XMLID_8_)" points="59.051,57.621 69.536,36.111 50.944,28.115 48.852,32.581 41.493,29.418 34.719,33.911        32.932,29.849 33.117,9.157 16.363,18.601 16.363,40.06 27.476,59.169 13.064,69.463 30.856,79.879 45.546,68.669        61.667,77.708 75.089,65.521 "/>

+<linearGradient id="XMLID_9_" gradientUnits="userSpaceOnUse" x1="60.585" y1="31.876" x2="53.8582" y2="45.1125">

+<stop offset="0" style="stop-color:#5AA7E0"/>

+<stop offset="1" style="stop-color:#3366CC"/>

+</linearGradient>

+<polygon fill="url(#XMLID_9_)" points="41.26,48.783 50.944,28.115 69.536,36.111 59.051,57.621 "/>

+<polygon fill="#0046B7" points="16.363,40.06 27.476,59.169 41.26,48.783 32.932,29.849 "/>

+<polygon fill="#3366CC" points="16.363,40.06 16.363,18.601 33.117,9.157 32.932,29.849 "/>

+<polygon fill="#CFECFF" points="26.696,39.23 41.493,29.418 59.523,37.168 45.546,47.954 "/>

+<path fill="#5AA7E0" d="M41.954,55.286"/>

+<polygon fill="#3366CC" points="26.696,39.23 27.476,59.169 45.546,68.669 45.546,47.954 "/>

+<polygon fill="#5AA7E0" points="13.064,69.463 27.476,59.169 45.546,68.669 30.856,79.879 "/>

+<linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="29.2085" y1="63.6836" x2="48.7102" y2="56.1976">

+<stop offset="0" style="stop-color:#5AA7E0"/>

+<stop offset="0.0056" style="stop-color:#5AA7E0"/>

+<stop offset="0.85" style="stop-color:#3366CC"/>

+<stop offset="1" style="stop-color:#3366CC"/>

+</linearGradient>

+<polygon fill="url(#XMLID_10_)" points="43.423,46.971 27.476,59.169 45.546,68.669 45.546,47.954 "/>

+<polygon fill="#0046B7" points="45.546,47.954 45.546,68.669 59.051,57.621 59.523,37.168 "/>

+<linearGradient id="XMLID_11_" gradientUnits="userSpaceOnUse" x1="45.3936" y1="59.5186" x2="59.0508" y2="59.5186">

+<stop offset="0" style="stop-color:#0046B7"/>

+<stop offset="1" style="stop-color:#3366CC"/>

+</linearGradient>

+<polygon fill="url(#XMLID_11_)" points="45.394,50.368 45.546,68.669 59.051,57.621 "/>

+<linearGradient id="XMLID_12_" gradientUnits="userSpaceOnUse" x1="60.8945" y1="68.6807" x2="57.2953" y2="58.792">

+<stop offset="0" style="stop-color:#5AA7E0"/>

+<stop offset="0.4101" style="stop-color:#5AA7E0"/>

+<stop offset="1" style="stop-color:#3366CC"/>

+</linearGradient>

+<polygon fill="url(#XMLID_12_)" points="61.667,77.708 45.546,68.669 59.051,57.621 75.089,65.521 "/>

+</g>

+</g>

+</g>

+</svg>

diff --git a/pjsip-apps/src/pjsua/symbian/group/ABLD.BAT b/pjsip-apps/src/pjsua/symbian/group/ABLD.BAT
new file mode 100644
index 0000000..70c8b68
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/group/ABLD.BAT
@@ -0,0 +1,15 @@
+@ECHO OFF
+
+REM Bldmake-generated batch file - ABLD.BAT
+REM ** DO NOT EDIT **
+
+perl -S ABLD.PL "\Users\Teluu\pjsip\trunk\pjsip-apps\src\pjsua\symbian\group\\" %1 %2 %3 %4 %5 %6 %7 %8 %9
+if errorlevel==1 goto CheckPerl
+goto End
+
+:CheckPerl
+perl -v >NUL
+if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
+goto End
+
+:End
diff --git a/pjsip-apps/src/pjsua/symbian/group/bld.inf b/pjsip-apps/src/pjsua/symbian/group/bld.inf
new file mode 100644
index 0000000..ba36d31
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/group/bld.inf
@@ -0,0 +1,26 @@
+
+PRJ_PLATFORMS
+WINSCW ARMV5 GCCE
+
+
+#ifdef SBSV2
+
+PRJ_EXTENSIONS
+	
+	START EXTENSION s60/mifconv
+	OPTION TARGETFILE pjsua_0xE44C2D02.mif
+	OPTION HEADERFILE pjsua_0xE44C2D02.mbg
+	OPTION SOURCEDIR ../gfx
+	OPTION SOURCES -c32 qgn_menu_pjsua
+	END
+
+#else
+
+PRJ_MMPFILES
+
+	gnumakefile pjsua_icons.mk
+
+#endif
+
+PRJ_MMPFILES
+pjsua.mmp
diff --git a/pjsip-apps/src/pjsua/symbian/group/pjsua.mmp b/pjsip-apps/src/pjsua/symbian/group/pjsua.mmp
new file mode 100644
index 0000000..88b87df
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/group/pjsua.mmp
@@ -0,0 +1,105 @@
+// These part may be overwritten by automated test
+// =BEGIN
+#define SND_HAS_APS	0
+#define SND_HAS_VAS	0
+#define SND_HAS_MDA	1
+// =END
+
+TARGET			pjsua.exe
+UID			0x100039CE 0xE44C2D02
+VENDORID	  	0
+TARGETTYPE		exe
+EPOCSTACKSIZE	 	0x5000
+
+SYSTEMINCLUDE 		\epoc32\include \epoc32\include\variant \epoc32\include\ecom
+USERINCLUDE	   	..\inc ..\data
+
+SOURCEPATH		..\data
+START RESOURCE		pjsua.rss
+HEADER
+TARGETPATH 		resource\apps
+END //RESOURCE
+
+START RESOURCE		pjsua_reg.rss
+TARGETPATH 	  	\private\10003a3f\apps
+END //RESOURCE
+
+LIBRARY			euser.lib apparc.lib cone.lib eikcore.lib avkon.lib
+LIBRARY			commonengine.lib efsrv.lib estor.lib eikcoctl.lib eikdlg.lib 
+LIBRARY			eikctl.lib bafl.lib fbscli.lib aknnotify.lib aknicon.lib
+LIBRARY			etext.lib gdi.lib egul.lib insock.lib
+LIBRARY			ecom.lib InetProtUtil.lib http.lib esock.lib
+
+LANG 				01
+
+START BITMAP pjsua.mbm
+	HEADER
+	TARGETPATH \resource\apps
+	SOURCEPATH ..\gfx
+	SOURCE c12,1 list_icon.bmp list_icon_mask.bmp
+	SOURCE c24 pjsua.bmp
+END
+
+SOURCEPATH		..\src
+
+#ifdef ENABLE_ABIV2_MODE
+DEBUGGABLE_UDEBONLY
+#endif
+
+SOURCE pjsuaContainer.cpp PjsuaContainerView.cpp pjsuaApplication.cpp pjsuaDocument.cpp pjsuaAppUi.cpp
+
+
+/* PJSIP library dependencies */
+
+MACRO			PJ_M_I386=1
+MACRO			PJ_SYMBIAN=1
+
+SYSTEMINCLUDE		..\..\..\..\..\pjlib\include
+SYSTEMINCLUDE		..\..\..\..\..\pjlib-util\include
+SYSTEMINCLUDE		..\..\..\..\..\pjnath\include
+SYSTEMINCLUDE		..\..\..\..\..\pjmedia\include
+SYSTEMINCLUDE		..\..\..\..\..\pjsip\include
+
+SYSTEMINCLUDE		\epoc32\include\libc
+
+LIBRARY			estlib.lib charconv.lib hal.lib
+
+STATICLIBRARY		pjsua_lib.lib
+STATICLIBRARY		pjsip_ua.lib pjsip_simple.lib pjsip.lib
+STATICLIBRARY		libgsmcodec.lib libspeexcodec.lib 
+STATICLIBRARY		libg7221codec.lib libpassthroughcodec.lib
+STATICLIBRARY		pjmedia.lib
+STATICLIBRARY		pjmedia_audiodev.lib
+STATICLIBRARY		pjsdp.lib
+STATICLIBRARY		pjnath.lib
+STATICLIBRARY		pjlib_util.lib pjlib.lib
+STATICLIBRARY		libsrtp.lib
+STATICLIBRARY		libresample.lib
+
+/* Sound device (APS/VAS/MDA) library & capability settings */
+#if SND_HAS_APS
+	LIBRARY		APSSession2.lib
+#endif
+
+#if SND_HAS_VAS
+	LIBRARY		VoIPAudioIntfc.lib		
+#endif
+
+#if SND_HAS_MDA
+	LIBRARY 	mediaclientaudiostream.lib
+	LIBRARY 	mediaclientaudioinputstream.lib
+#endif
+
+#if SND_HAS_APS || SND_HAS_VAS
+	CAPABILITY	NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment MultimediaDD
+#else
+	CAPABILITY	NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment
+#endif
+
+
+/* PJSUA APP */
+
+SOURCEPATH		..\..
+
+SOURCE 			pjsua_cli.c pjsua_legacy.c
+SOURCE 			pjsua_app.c pjsua_common.c pjsua_config.c
diff --git a/pjsip-apps/src/pjsua/symbian/group/pjsua_icons.mk b/pjsip-apps/src/pjsua/symbian/group/pjsua_icons.mk
new file mode 100644
index 0000000..525ba21
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/group/pjsua_icons.mk
@@ -0,0 +1,75 @@
+# ============================================================================
+#  Name	 : Icons_aif_scalable_dc.mk
+#  Part of  : pjsua
+#
+#  Description:
+# 
+# ============================================================================
+
+
+ifeq (WINS,$(findstring WINS, $(PLATFORM)))
+ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\Z
+else
+ZDIR=$(EPOCROOT)epoc32\data\z
+endif
+
+
+# ----------------------------------------------------------------------------
+# TODO: Configure these
+# ----------------------------------------------------------------------------
+
+TARGETDIR=$(ZDIR)\resource\apps
+ICONTARGETFILENAME=$(TARGETDIR)\pjsua_aif.mif
+HEADERDIR=$(EPOCROOT)epoc32\include
+HEADERFILENAME=$(HEADERDIR)\pjsua_aif.mbg
+
+ICONDIR=..\gfx
+
+do_nothing :
+	@rem do_nothing
+
+MAKMAKE : do_nothing
+
+BLD : do_nothing
+
+CLEAN :
+	@echo ...Deleting $(ICONTARGETFILENAME)
+	del /q /f $(ICONTARGETFILENAME)
+
+LIB : do_nothing
+
+CLEANLIB : do_nothing
+
+# ----------------------------------------------------------------------------
+# TODO: Configure these.
+#
+# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by
+# MifConv if the mask detph is defined.
+#
+# NOTE 2: Usually, source paths should not be included in the bitmap
+# definitions. MifConv searches for the icons in all icon directories in a
+# predefined order, which is currently \s60\icons, \s60\bitmaps2.
+# The directory \s60\icons is included in the search only if the feature flag
+# __SCALABLE_ICONS is defined.
+# ----------------------------------------------------------------------------
+# NOTE: if you have JUSTINTIME enabled for your S60 3rd FP1 or newer SDK
+# and this command crashes, consider adding "/X" to the command line.
+# See <http://forum.nokia.com/document/Forum_Nokia_Technical_Library_v1_35/contents/FNTL/Build_process_fails_at_mif_file_creation_in_S60_3rd_Ed_FP1_SDK.htm>
+# ----------------------------------------------------------------------------
+
+RESOURCE : $(ICONTARGETFILENAME)
+
+$(ICONTARGETFILENAME) : $(ICONDIR)\qgn_menu_pjsua.svg
+	mifconv $(ICONTARGETFILENAME) \
+		/H$(HEADERFILENAME) \
+		/c32,8 $(ICONDIR)\qgn_menu_pjsua.svg
+		
+FREEZE : do_nothing
+
+SAVESPACE : do_nothing
+
+RELEASABLES :
+	@echo $(ICONTARGETFILENAME)
+
+FINAL : do_nothing
+
diff --git a/pjsip-apps/src/pjsua/symbian/inc/PjsuaContainerView.h b/pjsip-apps/src/pjsua/symbian/inc/PjsuaContainerView.h
new file mode 100644
index 0000000..22b3ed8
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/inc/PjsuaContainerView.h
@@ -0,0 +1,94 @@
+/*
+========================================================================
+ Name        : PjsuaContainerView.h
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+#ifndef PJSUACONTAINERVIEW_H
+#define PJSUACONTAINERVIEW_H
+
+// [[[ begin generated region: do not modify [Generated Includes]
+#include <aknview.h>
+// ]]] end generated region [Generated Includes]
+
+
+// [[[ begin [Event Handler Includes]
+// ]]] end [Event Handler Includes]
+
+// [[[ begin generated region: do not modify [Generated Constants]
+// ]]] end generated region [Generated Constants]
+
+// [[[ begin generated region: do not modify [Generated Forward Declarations]
+class CPjsuaContainer;
+// ]]] end generated region [Generated Forward Declarations]
+
+/**
+ * Avkon view class for pjsuaContainerView. It is register with the view server
+ * by the AppUi. It owns the container control.
+ * @class	CpjsuaContainerView pjsuaContainerView.h
+ */						
+			
+class CpjsuaContainerView : public CAknView
+	{
+	
+	
+	// [[[ begin [Public Section]
+public:
+	// constructors and destructor
+	CpjsuaContainerView();
+	static CpjsuaContainerView* NewL();
+	static CpjsuaContainerView* NewLC();        
+	void ConstructL();
+	virtual ~CpjsuaContainerView();
+						
+	// from base class CAknView
+	TUid Id() const;
+	void HandleCommandL( TInt aCommand );
+	
+	// [[[ begin generated region: do not modify [Generated Methods]
+	CPjsuaContainer* CreateContainerL();
+	// ]]] end generated region [Generated Methods]
+	
+	// ]]] end [Public Section]
+	
+	void PutMessage( const char *msg );
+	
+	// [[[ begin [Protected Section]
+protected:
+	// from base class CAknView
+	void DoActivateL(
+		const TVwsViewId& aPrevViewId,
+		TUid aCustomMessageId,
+		const TDesC8& aCustomMessage );
+	void DoDeactivate();
+	void HandleStatusPaneSizeChange();
+	
+	// [[[ begin generated region: do not modify [Overridden Methods]
+	// ]]] end generated region [Overridden Methods]
+	
+	
+	// [[[ begin [User Handlers]
+	// ]]] end [User Handlers]
+	
+	// ]]] end [Protected Section]
+	
+	
+	// [[[ begin [Private Section]
+private:
+	void SetupStatusPaneL();
+	void CleanupStatusPane();
+	
+	// [[[ begin generated region: do not modify [Generated Instance Variables]
+	CPjsuaContainer* iPjsuaContainer;
+	// ]]] end generated region [Generated Instance Variables]
+	
+	// [[[ begin generated region: do not modify [Generated Methods]
+	// ]]] end generated region [Generated Methods]
+	
+	// ]]] end [Private Section]
+	
+	};
+
+#endif // PJSUACONTAINERVIEW_H
diff --git a/pjsip-apps/src/pjsua/symbian/inc/pjsua.hrh b/pjsip-apps/src/pjsua/symbian/inc/pjsua.hrh
new file mode 100644
index 0000000..ba27f50
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/inc/pjsua.hrh
@@ -0,0 +1,12 @@
+/*
+========================================================================
+ Name        : pjsua.hrh
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+enum TpjsuaViewUids
+	{
+	EPjsuaContainerViewId = 1
+	};
diff --git a/pjsip-apps/src/pjsua/symbian/inc/pjsua.pan b/pjsip-apps/src/pjsua/symbian/inc/pjsua.pan
new file mode 100644
index 0000000..e33dbd5
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/inc/pjsua.pan
@@ -0,0 +1,18 @@
+
+#ifndef PJSUA_PAN_H
+#define PJSUA_PAN_H
+
+/** pjsua application panic codes */
+enum TpjsuaPanics
+	{
+	EpjsuaUi = 1
+	// add further panics here
+	};
+
+inline void Panic(TpjsuaPanics aReason)
+	{
+	_LIT(applicationName,"pjsua");
+	User::Panic(applicationName, aReason);
+	}
+
+#endif // PJSUA_PAN_H
diff --git a/pjsip-apps/src/pjsua/symbian/inc/pjsuaAppUi.h b/pjsip-apps/src/pjsua/symbian/inc/pjsuaAppUi.h
new file mode 100644
index 0000000..8bfd244
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/inc/pjsuaAppUi.h
@@ -0,0 +1,70 @@
+/*
+========================================================================
+ Name        : pjsuaAppUi.h
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+#ifndef PJSUAAPPUI_H
+#define PJSUAAPPUI_H
+
+// [[[ begin generated region: do not modify [Generated Includes]
+#include <aknviewappui.h>
+// ]]] end generated region [Generated Includes]
+
+
+// [[[ begin generated region: do not modify [Generated Forward Declarations]
+class CpjsuaContainerView;
+// ]]] end generated region [Generated Forward Declarations]
+
+/**
+ * @class	CpjsuaAppUi pjsuaAppUi.h
+ * @brief The AppUi class handles application-wide aspects of the user interface, including
+ *        view management and the default menu, control pane, and status pane.
+ */
+class CpjsuaAppUi : public CAknViewAppUi
+	{
+public: 
+	// constructor and destructor
+	CpjsuaAppUi();
+	virtual ~CpjsuaAppUi();
+	void ConstructL();
+
+public:
+	// from CCoeAppUi
+	TKeyResponse HandleKeyEventL(
+				const TKeyEvent& aKeyEvent,
+				TEventCode aType );
+
+	// from CEikAppUi
+	void HandleCommandL( TInt aCommand );
+	void HandleResourceChangeL( TInt aType );
+
+	// from CAknAppUi
+	void HandleViewDeactivation( 
+			const TVwsViewId& aViewIdToBeDeactivated, 
+			const TVwsViewId& aNewlyActivatedViewId );
+
+private:
+	void InitializeContainersL();
+	// [[[ begin generated region: do not modify [Generated Methods]
+public: 
+	// ]]] end generated region [Generated Methods]
+	
+	void PutMsg(const char *msg);
+	
+	// [[[ begin generated region: do not modify [Generated Instance Variables]
+private: 
+	CpjsuaContainerView* iPjsuaContainerView;
+	// ]]] end generated region [Generated Instance Variables]
+	
+	
+	// [[[ begin [User Handlers]
+protected: 
+	// ]]] end [User Handlers]
+	void PrepareToExit();
+
+	};
+
+#endif // PJSUAAPPUI_H			
diff --git a/pjsip-apps/src/pjsua/symbian/inc/pjsuaApplication.h b/pjsip-apps/src/pjsua/symbian/inc/pjsuaApplication.h
new file mode 100644
index 0000000..eef6e3f
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/inc/pjsuaApplication.h
@@ -0,0 +1,35 @@
+/*
+========================================================================
+ Name        : pjsuaApplication.h
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+#ifndef PJSUAAPPLICATION_H
+#define PJSUAAPPLICATION_H
+
+// [[[ begin generated region: do not modify [Generated Includes]
+#include <aknapp.h>
+// ]]] end generated region [Generated Includes]
+
+// [[[ begin generated region: do not modify [Generated Constants]
+const TUid KUidpjsuaApplication = { 0xE44C2D02 };
+// ]]] end generated region [Generated Constants]
+
+/**
+ *
+ * @class	CpjsuaApplication pjsuaApplication.h
+ * @brief	A CAknApplication-derived class is required by the S60 application 
+ *          framework. It is subclassed to create the application's document 
+ *          object.
+ */
+class CpjsuaApplication : public CAknApplication
+	{
+private:
+	TUid AppDllUid() const;
+	CApaDocument* CreateDocumentL();
+	
+	};
+			
+#endif // PJSUAAPPLICATION_H		
diff --git a/pjsip-apps/src/pjsua/symbian/inc/pjsuaContainer.h b/pjsip-apps/src/pjsua/symbian/inc/pjsuaContainer.h
new file mode 100644
index 0000000..2ee1475
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/inc/pjsuaContainer.h
@@ -0,0 +1,112 @@
+/*
+========================================================================
+ Name        : pjsuaContainer.h
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+#ifndef PJSUACONTAINER_H
+#define PJSUACONTAINER_H
+
+// [[[ begin generated region: do not modify [Generated Includes]
+#include <coecntrl.h>		
+// ]]] end generated region [Generated Includes]
+
+
+// [[[ begin [Event Handler Includes]
+// ]]] end [Event Handler Includes]
+
+// [[[ begin generated region: do not modify [Generated Forward Declarations]
+class MEikCommandObserver;		
+class CEikImage;
+class CEikLabel;
+// ]]] end generated region [Generated Forward Declarations]
+
+/**
+ * Container class for pjsuaContainer
+ * 
+ * @class	CPjsuaContainer pjsuaContainer.h
+ */
+class CPjsuaContainer : public CCoeControl
+	{
+public:
+	// constructors and destructor
+	CPjsuaContainer();
+	static CPjsuaContainer* NewL( 
+		const TRect& aRect, 
+		const CCoeControl* aParent, 
+		MEikCommandObserver* aCommandObserver );
+	static CPjsuaContainer* NewLC( 
+		const TRect& aRect, 
+		const CCoeControl* aParent, 
+		MEikCommandObserver* aCommandObserver );
+	void ConstructL( 
+		const TRect& aRect, 
+		const CCoeControl* aParent, 
+		MEikCommandObserver* aCommandObserver );
+	virtual ~CPjsuaContainer();
+
+public:
+	// from base class CCoeControl
+	TInt CountComponentControls() const;
+	CCoeControl* ComponentControl( TInt aIndex ) const;
+	TKeyResponse OfferKeyEventL( 
+			const TKeyEvent& aKeyEvent, 
+			TEventCode aType );
+	void HandleResourceChange( TInt aType );
+	
+protected:
+	// from base class CCoeControl
+	void SizeChanged();
+
+private:
+	// from base class CCoeControl
+	void Draw( const TRect& aRect ) const;
+
+private:
+	void InitializeControlsL();
+	void LayoutControls();
+	CCoeControl* iFocusControl;
+	MEikCommandObserver* iCommandObserver;
+	// [[[ begin generated region: do not modify [Generated Methods]
+public: 
+	// ]]] end generated region [Generated Methods]
+	
+	void PutMessageL( const char* msg );
+	// [[[ begin generated region: do not modify [Generated Type Declarations]
+public: 
+	// ]]] end generated region [Generated Type Declarations]
+	
+	// [[[ begin generated region: do not modify [Generated Instance Variables]
+private: 
+	CEikImage* iImage1;
+	CEikLabel* iLabel1;
+	// ]]] end generated region [Generated Instance Variables]
+	
+	
+	// [[[ begin [Overridden Methods]
+protected: 
+	// ]]] end [Overridden Methods]
+	
+	
+	// [[[ begin [User Handlers]
+protected: 
+	// ]]] end [User Handlers]
+	
+public: 
+	enum TControls
+		{
+		// [[[ begin generated region: do not modify [Generated Contents]
+		EImage1,
+		ELabel1,
+		
+		// ]]] end generated region [Generated Contents]
+		
+		// add any user-defined entries here...
+		
+		ELastControl
+		};
+	};
+				
+#endif // PJSUACONTAINER_H
diff --git a/pjsip-apps/src/pjsua/symbian/inc/pjsuaDocument.h b/pjsip-apps/src/pjsua/symbian/inc/pjsuaDocument.h
new file mode 100644
index 0000000..be5deff
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/inc/pjsuaDocument.h
@@ -0,0 +1,36 @@
+/*
+========================================================================
+ Name        : pjsuaDocument.h
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+#ifndef PJSUADOCUMENT_H
+#define PJSUADOCUMENT_H
+
+#include <akndoc.h>
+		
+class CEikAppUi;
+
+/**
+* @class	CpjsuaDocument pjsuaDocument.h
+* @brief	A CAknDocument-derived class is required by the S60 application 
+*           framework. It is responsible for creating the AppUi object. 
+*/
+class CpjsuaDocument : public CAknDocument
+	{
+public: 
+	// constructor
+	static CpjsuaDocument* NewL( CEikApplication& aApp );
+
+private: 
+	// constructors
+	CpjsuaDocument( CEikApplication& aApp );
+	void ConstructL();
+	
+public: 
+	// from base class CEikDocument
+	CEikAppUi* CreateAppUiL();
+	};
+#endif // PJSUADOCUMENT_H
diff --git a/pjsip-apps/src/pjsua/symbian/pjsuaContainer.uidesign b/pjsip-apps/src/pjsua/symbian/pjsuaContainer.uidesign
new file mode 100644
index 0000000..e50fd6d
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/pjsuaContainer.uidesign
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<designerData version="1.1.0">
+  <componentManifest>
+    <manifestEntry id="com.nokia.sdt.series60.CAknView" version="1.2.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.DesignTimeContainer" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CommonBase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.StatusPane" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.ControlBase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.StatusPaneTitle" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.StatusPaneTitleBase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CBA" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CBABase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CCoeControl" version="1.2.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.ContainerBase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CEikImage" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.symbian.CEikAlignedBase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CCoeControlBase" version="1.0.0"/>
+    <manifestEntry id="com.nokia.sdt.series60.CEikLabel" version="1.0.0"/>
+  </componentManifest>
+  <property id="com.nokia.sdt.symbian.dm.RESOURCE_DIRECTORY_ID">data</property>
+  <property id="com.nokia.sdt.component.symbian.version">3.2.0</property>
+  <property id="com.nokia.sdt.component.symbian.vendor">com.nokia.series60</property>
+  <property id="com.nokia.sdt.symbian.dm.COMPONENT_PROVIDER">com.nokia.sdt.component.symbian.Symbian-Provider</property>
+  <property id="com.nokia.sdt.symbian.dm.INCLUDE_DIRECTORY_ID">inc</property>
+  <property id="com.nokia.sdt.symbian.dm.SOURCE_DIRECTORY_ID">src</property>
+  <property id="com.nokia.sdt.symbian.dm.SOURCEGEN_PROVIDER">com.nokia.sdt.sourcegen.Symbian-Provider</property>
+  <property id="com.nokia.sdt.symbian.dm.BUILD_DIRECTORY_ID">group</property>
+  <component id="com.nokia.sdt.series60.CAknView">
+    <property id="className">CpjsuaContainerView</property>
+    <compoundProperty id="location">
+      <property id="x">51</property>
+      <property id="y">44</property>
+    </compoundProperty>
+    <property id="name">pjsuaContainerView</property>
+    <compoundProperty id="size">
+      <property id="width">240</property>
+      <property id="height">320</property>
+    </compoundProperty>
+    <component id="com.nokia.sdt.series60.StatusPane">
+      <compoundProperty id="location">
+        <property id="x">20</property>
+      </compoundProperty>
+      <property id="name">statusPane</property>
+      <compoundProperty id="size">
+        <property id="width">204</property>
+        <property id="height">63</property>
+      </compoundProperty>
+      <component id="com.nokia.sdt.series60.StatusPaneTitle">
+        <compoundProperty id="location">
+          <property id="x">56</property>
+        </compoundProperty>
+        <property id="name">title</property>
+        <property id="titleText" type="i18n">STR_pjsuaContainerView_4</property>
+        <compoundProperty id="size">
+          <property id="width">148</property>
+          <property id="height">43</property>
+        </compoundProperty>
+        <compoundProperty id="image"/>
+      </component>
+    </component>
+    <component id="com.nokia.sdt.series60.CBA">
+      <compoundProperty id="location">
+        <property id="y">288</property>
+      </compoundProperty>
+      <compoundProperty id="info">
+        <property id="leftText" type="i18n">STR_pjsuaContainerView_1</property>
+        <property id="rightText" type="i18n">STR_pjsuaContainerView_2</property>
+        <property id="middleText" type="i18n">STR_pjsuaContainerView_3</property>
+        <property id="leftId"></property>
+        <property id="rightId">EAknSoftkeyBack</property>
+        <property id="type">R_AVKON_SOFTKEYS_EXIT</property>
+      </compoundProperty>
+      <property id="name">controlPane</property>
+      <compoundProperty id="size">
+        <property id="width">240</property>
+        <property id="height">32</property>
+      </compoundProperty>
+    </component>
+    <component id="com.nokia.sdt.series60.CCoeControl">
+      <property id="backColor">0,0,0</property>
+      <compoundProperty id="location">
+        <property id="y">66</property>
+      </compoundProperty>
+      <property id="className">CPjsuaContainer</property>
+      <property id="name">pjsuaContainer</property>
+      <compoundProperty id="size">
+        <property id="width">240</property>
+        <property id="height">222</property>
+      </compoundProperty>
+      <component id="com.nokia.sdt.series60.CEikImage">
+        <compoundProperty id="location">
+          <property id="x">0</property>
+          <property id="y">0</property>
+        </compoundProperty>
+        <property id="name">image1</property>
+        <compoundProperty id="size">
+          <property id="width">99</property>
+          <property id="height">111</property>
+        </compoundProperty>
+        <compoundProperty id="image">
+          <property id="bmpfile">\resource\apps\pjsua.mbm</property>
+          <property id="bmpid">EMbmPjsuaPjsua</property>
+        </compoundProperty>
+      </component>
+      <component id="com.nokia.sdt.series60.CEikLabel">
+        <compoundProperty id="location">
+          <property id="y">196</property>
+        </compoundProperty>
+        <property id="name">label1</property>
+        <property id="text" type="i18n">STR_pjsuaContainerView_5</property>
+        <compoundProperty id="size">
+          <property id="width">241</property>
+          <property id="height">27</property>
+        </compoundProperty>
+      </component>
+    </component>
+  </component>
+  <stringBundle>
+    <stringTable language="LANG_English">
+      <string id="STR_pjsuaContainerView_1"/>
+      <string id="STR_pjsuaContainerView_2"/>
+      <string id="STR_pjsuaContainerView_3"/>
+      <string id="STR_pjsuaContainerView_4">pjsuaContainer</string>
+      <string id="STR_pjsuaContainerView_5">Please wait..</string>
+    </stringTable>
+  </stringBundle>
+  <macroTable/>
+  <sourceMappingState>
+    <resourceMappings>
+      <resourceMapping instanceName="pjsuaContainerView">r_pjsua_container_pjsua_container_view</resourceMapping>
+      <resourceMapping instanceName="statusPane">r_pjsua_container_status_pane</resourceMapping>
+      <resourceMapping instanceName="label1">r_pjsua_container_label1</resourceMapping>
+      <resourceMapping instanceName="title">r_pjsua_container_title_resource</resourceMapping>
+    </resourceMappings>
+    <enumMappings>
+      <enumMapping instanceName="label1" propertyId="font">EEikLabelFontNormal</enumMapping>
+      <enumMapping instanceName="pjsuaContainerView" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_VIEW_UID">EPjsuaContainerViewId</enumMapping>
+      <enumMapping instanceName="label1" propertyId="alignment">EEikLabelAlignHCenter</enumMapping>
+      <enumMapping instanceName="title" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_STATUS_PANE_ID">EEikStatusPaneUidTitle</enumMapping>
+      <enumMapping instanceName="title" propertyId="" nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_CONTROL_TYPE">EAknCtTitlePane</enumMapping>
+    </enumMappings>
+    <arrayMappings/>
+  </sourceMappingState>
+  <generatedFiles>
+    <file>src/pjsuacontainer.cpp</file>
+    <file>src/pjsuacontainerview.cpp</file>
+    <file>inc/pjsuacontainer.h</file>
+    <file>inc/pjsuacontainerview.h</file>
+    <file>data/pjsua.rss</file>
+    <file>data/pjsuacontainer.rssi</file>
+    <file>inc/pjsua.hrh</file>
+    <file>data/pjsua.loc</file>
+    <file>data/pjsua.l01</file>
+    <file>data/pjsuacontainer.loc</file>
+    <file>data/pjsuacontainer.l01</file>
+  </generatedFiles>
+</designerData>
diff --git a/pjsip-apps/src/pjsua/symbian/sis/backup_registration.xml b/pjsip-apps/src/pjsua/symbian/sis/backup_registration.xml
new file mode 100644
index 0000000..7f7f2d0
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/sis/backup_registration.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" standalone="yes"?>
+<backup_registration>
+  <system_backup/>
+  <restore requires_reboot = "no"/>
+</backup_registration>
diff --git a/pjsip-apps/src/pjsua/symbian/sis/pjsua.pkg b/pjsip-apps/src/pjsua/symbian/sis/pjsua.pkg
new file mode 100644
index 0000000..5b25277
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/sis/pjsua.pkg
@@ -0,0 +1,36 @@
+; pjsua.pkg
+; This is an auto-generated PKG file by Carbide.
+; This file uses variables specific to Carbide builds that will not work
+; on command-line builds. If you want to use this generated PKG file from the
+; command-line tools you will need to modify the variables with the appropriate
+; values: $(EPOCROOT), $(PLATFORM), $(TARGET)
+; Also, the resource file entries should be changed to match the language
+; used in the build. For example, if building for LANGUAGE_01, change the file
+; extensions .rsc to .r01.
+;
+;Language - standard language definitions
+&EN
+
+; standard SIS file header
+#{"pjsua"},(0xE44C2D02),1,0,0
+
+;Localised Vendor name
+%{"Vendor-EN"}
+
+;Unique Vendor name
+:"Vendor"
+
+;Supports Series 60 v 3.0
+[0x101F7961], 0, 0, 0, {"Series60ProductID"}
+
+;Files to install
+;You should change the source paths to match that of your environment
+;<source> <destination>
+"$(EPOCROOT)Epoc32\release\$(PLATFORM)\$(TARGET)\pjsua.exe"		-"!:\sys\bin\pjsua.exe"
+"$(EPOCROOT)Epoc32\data\z\resource\apps\pjsua.r01"		-"!:\resource\apps\pjsua.r01"
+"$(EPOCROOT)Epoc32\data\z\private\10003a3f\apps\pjsua_reg.r01"	-"!:\private\10003a3f\import\apps\pjsua_reg.r01"
+"$(EPOCROOT)epoc32\data\z\resource\apps\pjsua_aif.mif" -"!:\resource\apps\pjsua_aif.mif"
+"$(EPOCROOT)epoc32\data\z\resource\apps\pjsua.mbm" -"!:\resource\apps\pjsua.mbm"
+; Add any installation notes if applicable
+;"pjsua.txt"					  -"!:\private\0xE44C2D02\pjsua.txt"
+
diff --git a/pjsip-apps/src/pjsua/symbian/src/PjsuaContainerView.cpp b/pjsip-apps/src/pjsua/symbian/src/PjsuaContainerView.cpp
new file mode 100644
index 0000000..8595260
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/src/PjsuaContainerView.cpp
@@ -0,0 +1,261 @@
+/*
+========================================================================
+ Name        : PjsuaContainerView.cpp
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+// [[[ begin generated region: do not modify [Generated System Includes]
+#include <aknviewappui.h>
+#include <eikmenub.h>
+#include <avkon.hrh>
+#include <barsread.h>
+#include <eikimage.h>
+#include <eikenv.h>
+#include <stringloader.h>
+#include <eiklabel.h>
+#include <akncontext.h>
+#include <akntitle.h>
+#include <eikbtgpc.h>
+#include <pjsua.rsg>
+// ]]] end generated region [Generated System Includes]
+
+// [[[ begin generated region: do not modify [Generated User Includes]
+
+#include "pjsua.hrh"
+#include "pjsuaContainerView.h"
+#include "pjsuaContainer.h"
+// ]]] end generated region [Generated User Includes]
+
+// [[[ begin generated region: do not modify [Generated Constants]
+// ]]] end generated region [Generated Constants]
+
+/**
+ * First phase of Symbian two-phase construction. Should not contain any
+ * code that could leave.
+ */
+CpjsuaContainerView::CpjsuaContainerView()
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	iPjsuaContainer = NULL;
+	// ]]] end generated region [Generated Contents]
+	
+	}
+
+/** 
+ * The view's destructor removes the container from the control
+ * stack and destroys it.
+ */
+CpjsuaContainerView::~CpjsuaContainerView()
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	delete iPjsuaContainer;
+	iPjsuaContainer = NULL;
+	// ]]] end generated region [Generated Contents]
+	
+	}
+
+/**
+ * Symbian two-phase constructor.
+ * This creates an instance then calls the second-phase constructor
+ * without leaving the instance on the cleanup stack.
+ * @return new instance of CpjsuaContainerView
+ */
+CpjsuaContainerView* CpjsuaContainerView::NewL()
+	{
+	CpjsuaContainerView* self = CpjsuaContainerView::NewLC();
+	CleanupStack::Pop( self );
+	return self;
+	}
+
+/**
+ * Symbian two-phase constructor.
+ * This creates an instance, pushes it on the cleanup stack,
+ * then calls the second-phase constructor.
+ * @return new instance of CpjsuaContainerView
+ */
+CpjsuaContainerView* CpjsuaContainerView::NewLC()
+	{
+	CpjsuaContainerView* self = new ( ELeave ) CpjsuaContainerView();
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	return self;
+	}
+
+
+/**
+ * Second-phase constructor for view.  
+ * Initialize contents from resource.
+ */ 
+void CpjsuaContainerView::ConstructL()
+	{
+	// [[[ begin generated region: do not modify [Generated Code]
+	BaseConstructL( R_PJSUA_CONTAINER_PJSUA_CONTAINER_VIEW );
+				
+	// ]]] end generated region [Generated Code]
+	
+	// add your own initialization code here
+	}
+
+/**
+ * @return The UID for this view
+ */
+TUid CpjsuaContainerView::Id() const
+	{
+	return TUid::Uid( EPjsuaContainerViewId );
+	}
+
+/**
+ * Handle a command for this view (override)
+ * @param aCommand command id to be handled
+ */
+void CpjsuaContainerView::HandleCommandL( TInt aCommand )
+	{
+	// [[[ begin generated region: do not modify [Generated Code]
+	TBool commandHandled = EFalse;
+	switch ( aCommand )
+		{	// code to dispatch to the AknView's menu and CBA commands is generated here
+		default:
+			break;
+		}
+	
+		
+	if ( !commandHandled ) 
+		{
+	
+		if ( aCommand == EAknSoftkeyBack )
+			{
+			AppUi()->HandleCommandL( EEikCmdExit );
+			}
+	
+		}
+	// ]]] end generated region [Generated Code]
+	
+	}
+
+/**
+ *	Handles user actions during activation of the view, 
+ *	such as initializing the content.
+ */
+void CpjsuaContainerView::DoActivateL( 
+		const TVwsViewId& /*aPrevViewId*/,
+		TUid /*aCustomMessageId*/,
+		const TDesC8& /*aCustomMessage*/ )
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	SetupStatusPaneL();
+	
+				
+				
+	
+	if ( iPjsuaContainer == NULL )
+		{
+		iPjsuaContainer = CreateContainerL();
+		iPjsuaContainer->SetMopParent( this );
+		AppUi()->AddToStackL( *this, iPjsuaContainer );
+		} 
+	// ]]] end generated region [Generated Contents]
+	
+	}
+
+/**
+ */
+void CpjsuaContainerView::DoDeactivate()
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	CleanupStatusPane();
+	
+	if ( iPjsuaContainer != NULL )
+		{
+		AppUi()->RemoveFromViewStack( *this, iPjsuaContainer );
+		delete iPjsuaContainer;
+		iPjsuaContainer = NULL;
+		}
+	// ]]] end generated region [Generated Contents]
+	
+	}
+
+/** 
+ * Handle status pane size change for this view (override)
+ */
+void CpjsuaContainerView::HandleStatusPaneSizeChange()
+	{
+	CAknView::HandleStatusPaneSizeChange();
+	
+	// this may fail, but we're not able to propagate exceptions here
+	TVwsViewId view;
+	AppUi()->GetActiveViewId( view );
+	if ( view.iViewUid == Id() )
+		{
+		TInt result;
+		TRAP( result, SetupStatusPaneL() );
+		}
+
+	// Hide menu
+	Cba()->MakeVisible(EFalse);
+	
+	//PutMessage("HandleStatusPaneSizeChange()");
+	
+	// [[[ begin generated region: do not modify [Generated Code]
+	// ]]] end generated region [Generated Code]
+	
+	}
+
+// [[[ begin generated function: do not modify
+void CpjsuaContainerView::SetupStatusPaneL()
+	{
+	// reset the context pane
+	TUid contextPaneUid = TUid::Uid( EEikStatusPaneUidContext );
+	CEikStatusPaneBase::TPaneCapabilities subPaneContext = 
+		StatusPane()->PaneCapabilities( contextPaneUid );
+	if ( subPaneContext.IsPresent() && subPaneContext.IsAppOwned() )
+		{
+		CAknContextPane* context = static_cast< CAknContextPane* > ( 
+			StatusPane()->ControlL( contextPaneUid ) );
+		context->SetPictureToDefaultL();
+		}
+	
+	// setup the title pane
+	TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle );
+	CEikStatusPaneBase::TPaneCapabilities subPaneTitle = 
+		StatusPane()->PaneCapabilities( titlePaneUid );
+	if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() )
+		{
+		CAknTitlePane* title = static_cast< CAknTitlePane* >( 
+			StatusPane()->ControlL( titlePaneUid ) );
+		TResourceReader reader;
+		iEikonEnv->CreateResourceReaderLC( reader, R_PJSUA_CONTAINER_TITLE_RESOURCE );
+		title->SetFromResourceL( reader );
+		CleanupStack::PopAndDestroy(); // reader internal state
+		}
+				
+	}
+
+// ]]] end generated function
+
+// [[[ begin generated function: do not modify
+void CpjsuaContainerView::CleanupStatusPane()
+	{
+	}
+
+// ]]] end generated function
+
+/**
+ *	Creates the top-level container for the view.  You may modify this method's
+ *	contents and the CPjsuaContainer::NewL() signature as needed to initialize the
+ *	container, but the signature for this method is fixed.
+ *	@return new initialized instance of CPjsuaContainer
+ */
+CPjsuaContainer* CpjsuaContainerView::CreateContainerL()
+	{
+	return CPjsuaContainer::NewL( ClientRect(), NULL, this );
+	}
+
+void CpjsuaContainerView::PutMessage( const char *msg )
+{
+	if (!iPjsuaContainer)
+	    return;
+
+	TRAPD(result, iPjsuaContainer->PutMessageL(msg));
+}
diff --git a/pjsip-apps/src/pjsua/symbian/src/pjsuaAppUi.cpp b/pjsip-apps/src/pjsua/symbian/src/pjsuaAppUi.cpp
new file mode 100644
index 0000000..124417c
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/src/pjsuaAppUi.cpp
@@ -0,0 +1,380 @@
+/*
+========================================================================
+ Name        : pjsuaAppUi.cpp
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+// [[[ begin generated region: do not modify [Generated System Includes]
+#include <eikmenub.h>
+#include <akncontext.h>
+#include <akntitle.h>
+#include <pjsua.rsg>
+// ]]] end generated region [Generated System Includes]
+
+// [[[ begin generated region: do not modify [Generated User Includes]
+#include "pjsuaAppUi.h"
+#include "pjsua.hrh"
+#include "pjsuaContainerView.h"
+// ]]] end generated region [Generated User Includes]
+
+// [[[ begin generated region: do not modify [Generated Constants]
+// ]]] end generated region [Generated Constants]
+
+#include "../../pjsua_app.h"
+
+/* Global vars */
+static CpjsuaAppUi *appui = NULL;
+static pj_ioqueue_t *app_ioqueue = NULL;
+static int restart_argc = 0;
+static char **restart_argv = NULL;
+
+/* Helper funtions to init/restart/destroy the pjsua */
+static void LibInitL();
+static void LibDestroyL();
+static void LibRestartL();
+
+/* pjsua app callbacks */
+static void lib_on_started(pj_status_t status, const char* title);
+static pj_bool_t lib_on_stopped(pj_bool_t restart, int argc, char** argv);
+static void lib_on_config_init(pjsua_app_config *cfg);
+
+/* Helper class to schedule function execution */
+class MyTimer : public CActive 
+{
+public:
+    typedef void (*timer_func)();
+    
+public:
+    static MyTimer* NewL(int ms, timer_func f) {
+	MyTimer *self = new MyTimer(f);
+	CleanupStack::PushL(self);
+	self->ConstructL(ms);
+	CleanupStack::Pop(self);
+	return self;
+    }
+    
+    MyTimer(timer_func f) : CActive(EPriorityStandard), func(f) {}
+    ~MyTimer() {
+	Cancel();
+	rtimer.Close();
+    }
+    
+    virtual void RunL() { (*func)(); delete this; }
+    virtual void DoCancel() { rtimer.Cancel(); }
+
+private:	
+    RTimer rtimer;
+    timer_func func;
+    
+    void ConstructL(int ms) {
+	rtimer.CreateLocal();
+	CActiveScheduler::Add(this);
+	rtimer.After(iStatus, ms * 1000);
+	SetActive();
+    }
+};
+
+/**
+ * Construct the CpjsuaAppUi instance
+ */ 
+CpjsuaAppUi::CpjsuaAppUi()
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	// ]]] end generated region [Generated Contents]
+	
+	}
+
+/** 
+ * The appui's destructor removes the container from the control
+ * stack and destroys it.
+ */
+CpjsuaAppUi::~CpjsuaAppUi()
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	// ]]] end generated region [Generated Contents]
+	
+	}
+
+// [[[ begin generated function: do not modify
+void CpjsuaAppUi::InitializeContainersL()
+	{
+	iPjsuaContainerView = CpjsuaContainerView::NewL();
+	AddViewL( iPjsuaContainerView );
+	SetDefaultViewL( *iPjsuaContainerView );
+	}
+// ]]] end generated function
+
+/**
+ * Handle a command for this appui (override)
+ * @param aCommand command id to be handled
+ */
+void CpjsuaAppUi::HandleCommandL( TInt aCommand )
+	{
+	// [[[ begin generated region: do not modify [Generated Code]
+	TBool commandHandled = EFalse;
+	switch ( aCommand )
+		{ // code to dispatch to the AppUi's menu and CBA commands is generated here
+		default:
+			break;
+		}
+	
+		
+	if ( !commandHandled ) 
+		{
+		if ( aCommand == EAknSoftkeyExit || aCommand == EEikCmdExit )
+			{
+			Exit();
+			}
+		}
+	// ]]] end generated region [Generated Code]
+	
+	}
+
+/** 
+ * Override of the HandleResourceChangeL virtual function
+ */
+void CpjsuaAppUi::HandleResourceChangeL( TInt aType )
+	{
+	CAknViewAppUi::HandleResourceChangeL( aType );
+	// [[[ begin generated region: do not modify [Generated Code]
+	// ]]] end generated region [Generated Code]
+	
+	}
+				
+/** 
+ * Override of the HandleKeyEventL virtual function
+ * @return EKeyWasConsumed if event was handled, EKeyWasNotConsumed if not
+ * @param aKeyEvent 
+ * @param aType 
+ */
+TKeyResponse CpjsuaAppUi::HandleKeyEventL(
+		const TKeyEvent& aKeyEvent,
+		TEventCode aType )
+	{
+	// The inherited HandleKeyEventL is private and cannot be called
+	// [[[ begin generated region: do not modify [Generated Contents]
+	// ]]] end generated region [Generated Contents]
+
+	// Left or right softkey pressed
+	if (aType==EEventKeyDown && 
+	    (aKeyEvent.iScanCode == EStdKeyDevice0 || 
+	     aKeyEvent.iScanCode == EStdKeyDevice1))    
+	{
+	    Cba()->MakeVisible(ETrue);
+	} else {
+	    Cba()->MakeVisible(EFalse);   
+	}
+
+	return EKeyWasNotConsumed;
+	}
+
+/** 
+ * Override of the HandleViewDeactivation virtual function
+ *
+ * @param aViewIdToBeDeactivated 
+ * @param aNewlyActivatedViewId 
+ */
+void CpjsuaAppUi::HandleViewDeactivation( 
+		const TVwsViewId& aViewIdToBeDeactivated, 
+		const TVwsViewId& aNewlyActivatedViewId )
+	{
+	CAknViewAppUi::HandleViewDeactivation( 
+			aViewIdToBeDeactivated, 
+			aNewlyActivatedViewId );
+	// [[[ begin generated region: do not modify [Generated Contents]
+	// ]]] end generated region [Generated Contents]
+	
+	}
+
+/**
+ * @brief Completes the second phase of Symbian object construction. 
+ * Put initialization code that could leave here. 
+ */ 
+void CpjsuaAppUi::ConstructL()
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	
+	BaseConstructL( EAknEnableSkin  | 
+					 EAknEnableMSK ); 
+	InitializeContainersL();
+	// ]]] end generated region [Generated Contents]
+	
+	// Save pointer to this AppUi
+	appui = this;
+	
+	// Full screen
+	StatusPane()->MakeVisible(EFalse);
+	Cba()->MakeVisible(EFalse);
+
+	// Schedule Lib Init
+	MyTimer::NewL(100, &LibInitL);
+	}
+
+/* Called by Symbian GUI framework when app is about to exit */
+void CpjsuaAppUi::PrepareToExit()
+{
+    TRAPD(result, LibDestroyL());
+    CAknViewAppUi::PrepareToExit();
+}
+
+/* Print message on screen */
+void CpjsuaAppUi::PutMsg(const char *msg)
+{
+    iPjsuaContainerView->PutMessage(msg);
+}
+
+#include <es_sock.h>
+
+static RSocketServ aSocketServer;
+static RConnection aConn;
+
+/* Called when pjsua is started */
+void lib_on_started(pj_status_t status, const char* title)
+{
+    appui->PutMsg(title);
+}
+
+/* Called when pjsua is stopped */
+pj_bool_t lib_on_stopped(pj_bool_t restart, int argc, char** argv)
+{
+    if (restart) {
+	restart_argc = argc;
+	restart_argv = argv;
+
+	// Schedule Lib Init
+	MyTimer::NewL(100, &LibRestartL);
+    } else {
+	/* Destroy & quit GUI, e.g: clean up window, resources  */
+	appui->Exit();
+    }
+
+    return PJ_FALSE;
+}
+
+/* Called before pjsua initializing config.
+ * We need to override some settings here.
+ */
+void lib_on_config_init(pjsua_app_config *cfg)
+{
+    /* Disable threading */
+    cfg->cfg.thread_cnt = 0;
+    cfg->cfg.thread_cnt = 0;
+    cfg->media_cfg.thread_cnt = 0;
+    cfg->media_cfg.has_ioqueue = PJ_FALSE;
+
+    /* Create ioqueue for telnet CLI */
+    if (app_ioqueue ==  NULL) {
+	pj_ioqueue_create(cfg->pool, 0, &app_ioqueue);
+    }
+    cfg->cli_cfg.telnet_cfg.ioqueue = app_ioqueue; 
+}
+
+void LibInitL()
+{
+    pj_symbianos_params sym_params;
+    char* argv[] = {
+	"",
+	"--use-cli",
+	"--cli-telnet-port=0",
+	"--no-cli-console"
+    };
+    app_cfg_t app_cfg;
+    pj_status_t status;
+    TInt err;
+
+    // Initialize RSocketServ
+    if ((err=aSocketServer.Connect(32)) != KErrNone) {
+    	status = PJ_STATUS_FROM_OS(err);
+    	goto on_return;
+    }
+    
+    // Open up a connection
+    if ((err=aConn.Open(aSocketServer)) != KErrNone) {
+	aSocketServer.Close();
+	status = PJ_STATUS_FROM_OS(err);
+    	goto on_return;
+    }
+    if ((err=aConn.Start()) != KErrNone) {
+	aConn.Close();
+    	aSocketServer.Close();
+    	status = PJ_STATUS_FROM_OS(err);
+    	goto on_return;
+    }
+    
+    // Set Symbian OS parameters in pjlib.
+    // This must be done before pj_init() is called.
+    pj_bzero(&sym_params, sizeof(sym_params));
+    sym_params.rsocketserv = &aSocketServer;
+    sym_params.rconnection = &aConn;
+    pj_symbianos_set_params(&sym_params);
+
+    pj_bzero(&app_cfg, sizeof(app_cfg));
+    app_cfg.argc = PJ_ARRAY_SIZE(argv);
+    app_cfg.argv = argv;
+    app_cfg.on_started = &lib_on_started;
+    app_cfg.on_stopped = &lib_on_stopped;
+    app_cfg.on_config_init = &lib_on_config_init;
+
+    appui->PutMsg("Initializing..");
+    status = app_init(&app_cfg);
+    if (status != PJ_SUCCESS)
+	goto on_return;
+    
+    appui->PutMsg("Starting..");
+    status = app_run(PJ_FALSE);
+    if (status != PJ_SUCCESS)
+	goto on_return;
+
+on_return:
+    if (status != PJ_SUCCESS)
+	appui->PutMsg("Initialization failed");
+}
+
+void LibDestroyL()
+{
+    if (app_ioqueue) {
+	pj_ioqueue_destroy(app_ioqueue);
+	app_ioqueue = NULL;
+    }
+    app_destroy();
+    CloseSTDLIB();
+}
+
+void LibRestartL()
+{
+    app_cfg_t app_cfg;
+    pj_status_t status;
+    
+    /* Destroy pjsua app first */
+
+    if (app_ioqueue) {
+	pj_ioqueue_destroy(app_ioqueue);
+	app_ioqueue = NULL;
+    }
+    app_destroy();
+
+    /* Reinit pjsua app */
+    
+    pj_bzero(&app_cfg, sizeof(app_cfg));
+    app_cfg.argc = restart_argc;
+    app_cfg.argv = restart_argv;
+    app_cfg.on_started = &lib_on_started;
+    app_cfg.on_stopped = &lib_on_stopped;
+    app_cfg.on_config_init = &lib_on_config_init;
+
+    status = app_init(&app_cfg);
+    if (status != PJ_SUCCESS) {
+	appui->PutMsg("app_init() failed");
+	return;
+    }
+	
+    /* Run pjsua app */
+
+    status = app_run(PJ_FALSE);
+    if (status != PJ_SUCCESS) {
+	appui->PutMsg("app_run() failed");
+	return;
+    }
+}
diff --git a/pjsip-apps/src/pjsua/symbian/src/pjsuaApplication.cpp b/pjsip-apps/src/pjsua/symbian/src/pjsuaApplication.cpp
new file mode 100644
index 0000000..9196b9f
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/src/pjsuaApplication.cpp
@@ -0,0 +1,78 @@
+/*
+========================================================================
+ Name        : pjsuaApplication.cpp
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+// [[[ begin generated region: do not modify [Generated System Includes]
+// ]]] end generated region [Generated System Includes]
+
+// [[[ begin generated region: do not modify [Generated Includes]
+#include "pjsuaApplication.h"
+#include "pjsuaDocument.h"
+#ifdef EKA2
+#include <eikstart.h>
+#endif
+// ]]] end generated region [Generated Includes]
+
+/**
+ * @brief Returns the application's UID (override from CApaApplication::AppDllUid())
+ * @return UID for this application (KUidpjsuaApplication)
+ */
+TUid CpjsuaApplication::AppDllUid() const
+	{
+	return KUidpjsuaApplication;
+	}
+
+/**
+ * @brief Creates the application's document (override from CApaApplication::CreateDocumentL())
+ * @return Pointer to the created document object (CpjsuaDocument)
+ */
+CApaDocument* CpjsuaApplication::CreateDocumentL()
+	{
+	return CpjsuaDocument::NewL( *this );
+	}
+
+#ifdef EKA2
+
+/**
+ *	@brief Called by the application framework to construct the application object
+ *  @return The application (CpjsuaApplication)
+ */	
+LOCAL_C CApaApplication* NewApplication()
+	{
+	return new CpjsuaApplication;
+	}
+
+/**
+* @brief This standard export is the entry point for all Series 60 applications
+* @return error code
+ */	
+GLDEF_C TInt E32Main()
+	{
+	return EikStart::RunApplication( NewApplication );
+	}
+	
+#else 	// Series 60 2.x main DLL program code
+
+/**
+* @brief This standard export constructs the application object.
+* @return The application (CpjsuaApplication)
+*/
+EXPORT_C CApaApplication* NewApplication()
+	{
+	return new CpjsuaApplication;
+	}
+
+/**
+* @brief This standard export is the entry point for all Series 60 applications
+* @return error code
+*/
+GLDEF_C TInt E32Dll(TDllReason /*reason*/)
+	{
+	return KErrNone;
+	}
+
+#endif // EKA2
diff --git a/pjsip-apps/src/pjsua/symbian/src/pjsuaContainer.cpp b/pjsip-apps/src/pjsua/symbian/src/pjsuaContainer.cpp
new file mode 100644
index 0000000..5dec51f
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/src/pjsuaContainer.cpp
@@ -0,0 +1,312 @@
+/*
+========================================================================
+ Name        : pjsuaContainer.cpp
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+// [[[ begin generated region: do not modify [Generated System Includes]
+#include <barsread.h>
+#include <eikimage.h>
+#include <eikenv.h>
+#include <stringloader.h>
+#include <eiklabel.h>
+#include <aknviewappui.h>
+#include <eikappui.h>
+#include <akniconutils.h>
+#include <pjsua.mbg>
+#include <pjsua.rsg>
+// ]]] end generated region [Generated System Includes]
+
+// [[[ begin generated region: do not modify [Generated User Includes]
+#include "pjsuaContainer.h"
+#include "pjsuaContainerView.h"
+#include "pjsua.hrh"
+// ]]] end generated region [Generated User Includes]
+
+#include <eikmenub.h>
+
+// [[[ begin generated region: do not modify [Generated Constants]
+_LIT( KpjsuaFile, "\\resource\\apps\\pjsua.mbm" );
+// ]]] end generated region [Generated Constants]
+
+/**
+ * First phase of Symbian two-phase construction. Should not 
+ * contain any code that could leave.
+ */
+CPjsuaContainer::CPjsuaContainer()
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	iImage1 = NULL;
+	iLabel1 = NULL;
+	// ]]] end generated region [Generated Contents]
+	
+	}
+/** 
+ * Destroy child controls.
+ */
+CPjsuaContainer::~CPjsuaContainer()
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	delete iImage1;
+	iImage1 = NULL;
+	delete iLabel1;
+	iLabel1 = NULL;
+	// ]]] end generated region [Generated Contents]
+	
+	}
+				
+/**
+ * Construct the control (first phase).
+ *  Creates an instance and initializes it.
+ *  Instance is not left on cleanup stack.
+ * @param aRect bounding rectangle
+ * @param aParent owning parent, or NULL
+ * @param aCommandObserver command observer
+ * @return initialized instance of CPjsuaContainer
+ */
+CPjsuaContainer* CPjsuaContainer::NewL( 
+		const TRect& aRect, 
+		const CCoeControl* aParent, 
+		MEikCommandObserver* aCommandObserver )
+	{
+	CPjsuaContainer* self = CPjsuaContainer::NewLC( 
+			aRect, 
+			aParent, 
+			aCommandObserver );
+	CleanupStack::Pop( self );
+	return self;
+	}
+
+/**
+ * Construct the control (first phase).
+ *  Creates an instance and initializes it.
+ *  Instance is left on cleanup stack.
+ * @param aRect The rectangle for this window
+ * @param aParent owning parent, or NULL
+ * @param aCommandObserver command observer
+ * @return new instance of CPjsuaContainer
+ */
+CPjsuaContainer* CPjsuaContainer::NewLC( 
+		const TRect& aRect, 
+		const CCoeControl* aParent, 
+		MEikCommandObserver* aCommandObserver )
+	{
+	CPjsuaContainer* self = new ( ELeave ) CPjsuaContainer();
+	CleanupStack::PushL( self );
+	self->ConstructL( aRect, aParent, aCommandObserver );
+	return self;
+	}
+			
+/**
+ * Construct the control (second phase).
+ *  Creates a window to contain the controls and activates it.
+ * @param aRect bounding rectangle
+ * @param aCommandObserver command observer
+ * @param aParent owning parent, or NULL
+ */ 
+void CPjsuaContainer::ConstructL( 
+		const TRect& aRect, 
+		const CCoeControl* aParent, 
+		MEikCommandObserver* aCommandObserver )
+	{
+	if ( aParent == NULL )
+	    {
+		CreateWindowL();
+	    }
+	else
+	    {
+	    SetContainerWindowL( *aParent );
+	    }
+	iFocusControl = NULL;
+	iCommandObserver = aCommandObserver;
+	InitializeControlsL();
+	SetRect( aRect );
+
+	// Full screen
+	SetExtentToWholeScreen();
+	
+	// Set label color
+	//iLabel1->OverrideColorL( EColorLabelText, KRgbWhite );
+	//iLabel1->OverrideColorL(EColorControlBackground, KRgbBlack )
+	iLabel1->SetEmphasis( CEikLabel::EFullEmphasis);
+	iLabel1->OverrideColorL( EColorLabelHighlightFullEmphasis, KRgbBlack );
+	iLabel1->OverrideColorL( EColorLabelTextEmphasis, KRgbWhite );
+
+	// Set label font
+	 CFont* fontUsed;
+	_LIT(f,"Arial");
+	TFontSpec* fontSpec = new TFontSpec(f, 105);
+	TFontStyle* fontStyle = new TFontStyle();
+	fontStyle->SetPosture(EPostureUpright);
+	fontStyle->SetStrokeWeight(EStrokeWeightNormal);
+	fontSpec->iFontStyle = *fontStyle;
+	fontUsed = iCoeEnv->CreateScreenFontL(*fontSpec);
+	iLabel1->SetFont(fontUsed);
+	iLabel1->SetAlignment( EHCenterVCenter );
+	
+	ActivateL();
+	// [[[ begin generated region: do not modify [Post-ActivateL initializations]
+	// ]]] end generated region [Post-ActivateL initializations]
+	
+	}
+			
+/**
+* Return the number of controls in the container (override)
+* @return count
+*/
+TInt CPjsuaContainer::CountComponentControls() const
+	{
+	return ( int ) ELastControl;
+	}
+				
+/**
+* Get the control with the given index (override)
+* @param aIndex Control index [0...n) (limited by #CountComponentControls)
+* @return Pointer to control
+*/
+CCoeControl* CPjsuaContainer::ComponentControl( TInt aIndex ) const
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	switch ( aIndex )
+		{
+		case EImage1:
+			return iImage1;
+		case ELabel1:
+			return iLabel1;
+		}
+	// ]]] end generated region [Generated Contents]
+	
+	// handle any user controls here...
+	
+	return NULL;
+	}
+				
+/**
+ *	Handle resizing of the container. This implementation will lay out
+ *  full-sized controls like list boxes for any screen size, and will layout
+ *  labels, editors, etc. to the size they were given in the UI designer.
+ *  This code will need to be modified to adjust arbitrary controls to
+ *  any screen size.
+ */				
+void CPjsuaContainer::SizeChanged()
+	{
+	CCoeControl::SizeChanged();
+	LayoutControls();
+
+	// Align the image
+	int x = (Size().iWidth - iImage1->Size().iWidth) / 2;
+	int y = (Size().iHeight - iImage1->Size().iHeight) / 2;
+	iImage1->SetPosition(TPoint(x, y));
+	
+	// Align the label
+	iLabel1->SetExtent(TPoint(0, Size().iHeight - iLabel1->Size().iHeight),
+			   TSize(Size().iWidth, iLabel1->Size().iHeight));
+	
+	// [[[ begin generated region: do not modify [Generated Contents]
+			
+	// ]]] end generated region [Generated Contents]
+	
+	}
+				
+// [[[ begin generated function: do not modify
+/**
+ * Layout components as specified in the UI Designer
+ */
+void CPjsuaContainer::LayoutControls()
+	{
+	iImage1->SetExtent( TPoint( 0, 0 ), TSize( 99, 111 ) );
+	iLabel1->SetExtent( TPoint( 0, 196 ), TSize( 241, 27 ) );
+	}
+// ]]] end generated function
+
+/**
+ *	Handle key events.
+ */				
+TKeyResponse CPjsuaContainer::OfferKeyEventL( 
+		const TKeyEvent& aKeyEvent, 
+		TEventCode aType )
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	
+	// ]]] end generated region [Generated Contents]
+	
+	if ( iFocusControl != NULL
+		&& iFocusControl->OfferKeyEventL( aKeyEvent, aType ) == EKeyWasConsumed )
+		{
+		return EKeyWasConsumed;
+		}
+	return CCoeControl::OfferKeyEventL( aKeyEvent, aType );
+	}
+				
+// [[[ begin generated function: do not modify
+/**
+ *	Initialize each control upon creation.
+ */				
+void CPjsuaContainer::InitializeControlsL()
+	{
+	iImage1 = new ( ELeave ) CEikImage;
+		{
+		CFbsBitmap *bitmap, *mask;
+		AknIconUtils::CreateIconL( bitmap, mask,
+				KpjsuaFile, EMbmPjsuaPjsua, -1 );
+		AknIconUtils::SetSize( bitmap, TSize( 99, 111 ), EAspectRatioPreserved );
+		iImage1->SetPicture( bitmap );
+		}
+	iImage1->SetAlignment( EHCenterVTop );
+	iLabel1 = new ( ELeave ) CEikLabel;
+	iLabel1->SetContainerWindowL( *this );
+		{
+		TResourceReader reader;
+		iEikonEnv->CreateResourceReaderLC( reader, R_PJSUA_CONTAINER_LABEL1 );
+		iLabel1->ConstructFromResourceL( reader );
+		CleanupStack::PopAndDestroy(); // reader internal state
+		}
+	
+	}
+// ]]] end generated function
+
+/** 
+ * Handle global resource changes, such as scalable UI or skin events (override)
+ */
+void CPjsuaContainer::HandleResourceChange( TInt aType )
+	{
+	CCoeControl::HandleResourceChange( aType );
+	SetRect( iAvkonViewAppUi->View( TUid::Uid( EPjsuaContainerViewId ) )->ClientRect() );
+	// [[[ begin generated region: do not modify [Generated Contents]
+	// ]]] end generated region [Generated Contents]
+	
+	}
+				
+/**
+ *	Draw container contents.
+ */				
+void CPjsuaContainer::Draw( const TRect& aRect ) const
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	CWindowGc& gc = SystemGc();
+	gc.SetPenStyle( CGraphicsContext::ENullPen );
+	TRgb backColor( 0,0,0 );
+	gc.SetBrushColor( backColor );
+	gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+	gc.DrawRect( aRect );
+	
+	// ]]] end generated region [Generated Contents]
+	
+	}
+
+void CPjsuaContainer::PutMessageL( const char * msg )
+{
+    if (!iLabel1)
+	return;
+    
+    TPtrC8 ptr(reinterpret_cast<const TUint8*>(msg));
+    HBufC* buffer = HBufC::NewLC(ptr.Length());
+    buffer->Des().Copy(ptr);
+
+    iLabel1->SetTextL(*buffer);
+    iLabel1->DrawNow();
+
+    CleanupStack::PopAndDestroy(buffer);
+}
diff --git a/pjsip-apps/src/pjsua/symbian/src/pjsuaDocument.cpp b/pjsip-apps/src/pjsua/symbian/src/pjsuaDocument.cpp
new file mode 100644
index 0000000..f349c6e
--- /dev/null
+++ b/pjsip-apps/src/pjsua/symbian/src/pjsuaDocument.cpp
@@ -0,0 +1,57 @@
+/*
+========================================================================
+ Name        : pjsuaDocument.cpp
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+// [[[ begin generated region: do not modify [Generated User Includes]
+#include "pjsuaDocument.h"
+#include "pjsuaAppUi.h"
+// ]]] end generated region [Generated User Includes]
+
+/**
+ * @brief Constructs the document class for the application.
+ * @param anApplication the application instance
+ */
+CpjsuaDocument::CpjsuaDocument( CEikApplication& anApplication )
+	: CAknDocument( anApplication )
+	{
+	}
+
+/**
+ * @brief Completes the second phase of Symbian object construction. 
+ * Put initialization code that could leave here.  
+ */ 
+void CpjsuaDocument::ConstructL()
+	{
+	}
+	
+/**
+ * Symbian OS two-phase constructor.
+ *
+ * Creates an instance of CpjsuaDocument, constructs it, and
+ * returns it.
+ *
+ * @param aApp the application instance
+ * @return the new CpjsuaDocument
+ */
+CpjsuaDocument* CpjsuaDocument::NewL( CEikApplication& aApp )
+	{
+	CpjsuaDocument* self = new ( ELeave ) CpjsuaDocument( aApp );
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	CleanupStack::Pop( self );
+	return self;
+	}
+
+/**
+ * @brief Creates the application UI object for this document.
+ * @return the new instance
+ */	
+CEikAppUi* CpjsuaDocument::CreateAppUiL()
+	{
+	return new ( ELeave ) CpjsuaAppUi;
+	}
+