[Tapitest] Added tapitest base code and modem tests
authorshikha.ta <shikha.ta@samsung.com>
Thu, 13 Jul 2017 11:48:14 +0000 (17:18 +0530)
committershikha.ta <shikha.ta@samsung.com>
Thu, 13 Jul 2017 11:48:14 +0000 (17:18 +0530)
Change-Id: Icda4d46d7cc427eed5ac4e4ebbc248c6b4ea9597
Signed-off-by: shikha.ta <shikha.ta@samsung.com>
Tizen.Tapi.sln [moved from src/Tizen.Tapi/Tizen.Tapi.sln with 57% similarity, mode: 0755]
test/Tizen.Tapitest/CommonPage.cs [new file with mode: 0755]
test/Tizen.Tapitest/MainPage.cs [new file with mode: 0755]
test/Tizen.Tapitest/ModemPage.cs [new file with mode: 0755]
test/Tizen.Tapitest/Program.cs [new file with mode: 0755]
test/Tizen.Tapitest/Properties/AssemblyInfo.cs [new file with mode: 0755]
test/Tizen.Tapitest/Tizen.Tapitest.csproj [new file with mode: 0755]
test/Tizen.Tapitest/Tizen.Tapitest.nuget.targets [new file with mode: 0755]
test/Tizen.Tapitest/Tizen.Tapitest.project.json [new file with mode: 0755]
test/Tizen.Tapitest/shared/res/Tizen.Tapitest.png [new file with mode: 0755]
test/Tizen.Tapitest/tizen-manifest.xml [new file with mode: 0755]

old mode 100644 (file)
new mode 100755 (executable)
similarity index 57%
rename from src/Tizen.Tapi/Tizen.Tapi.sln
rename to Tizen.Tapi.sln
index 9edd502..cdb3a54
@@ -1,9 +1,11 @@
 \r
 Microsoft Visual Studio Solution File, Format Version 12.00\r
 # Visual Studio 15\r
-VisualStudioVersion = 15.0.26430.12\r
+VisualStudioVersion = 15.0.26430.14\r
 MinimumVisualStudioVersion = 10.0.40219.1\r
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Tapi", "Tizen.Tapi.csproj", "{5BF0618D-32CA-4356-B25B-11BDFD0E6119}"\r
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tizen.Tapi", "Tizen.Tapi\Tizen.Tapi.csproj", "{5BF0618D-32CA-4356-B25B-11BDFD0E6119}"\r
+EndProject\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tizen.Tapitest", "Tizen.Tapitest\Tizen.Tapitest.csproj", "{BC2C461D-A67A-47FF-8AAA-D584BD379226}"\r
 EndProject\r
 Global\r
        GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
@@ -15,6 +17,10 @@ Global
                {5BF0618D-32CA-4356-B25B-11BDFD0E6119}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
                {5BF0618D-32CA-4356-B25B-11BDFD0E6119}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
                {5BF0618D-32CA-4356-B25B-11BDFD0E6119}.Release|Any CPU.Build.0 = Release|Any CPU\r
+               {BC2C461D-A67A-47FF-8AAA-D584BD379226}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {BC2C461D-A67A-47FF-8AAA-D584BD379226}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {BC2C461D-A67A-47FF-8AAA-D584BD379226}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+               {BC2C461D-A67A-47FF-8AAA-D584BD379226}.Release|Any CPU.Build.0 = Release|Any CPU\r
        EndGlobalSection\r
        GlobalSection(SolutionProperties) = preSolution\r
                HideSolutionNode = FALSE\r
diff --git a/test/Tizen.Tapitest/CommonPage.cs b/test/Tizen.Tapitest/CommonPage.cs
new file mode 100755 (executable)
index 0000000..b1546bf
--- /dev/null
@@ -0,0 +1,166 @@
+using System;
+using System.Collections.Generic;
+using Xamarin.Forms;
+using Tizen.Tapi;
+using Tizen;
+using System.Linq;
+
+namespace XamarinForTizen.Tizen
+{
+    public class CommonPage : ContentPage
+    {
+        List<string> cplist = new List<string>();
+        public CommonPage()
+        {
+            var cpNameBtn = new Button
+            {
+                Text = "CPName",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            cpNameBtn.Clicked += cpNameBtn_Clicked;
+
+            var initBtn0 = new Button
+            {
+                Text = "InitTapimodem0",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            initBtn0.Clicked += initBtn0_Clicked;
+
+            var initBtn1 = new Button
+            {
+                Text = "InitTapimodem1",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            initBtn1.Clicked += initBtn1_Clicked;
+
+            var deinitBtn0 = new Button
+            {
+                Text = "DeinitTapimodem0",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            deinitBtn0.Clicked += deinitBtn0_Clicked;
+
+            var deinitBtn1 = new Button
+            {
+                Text = "DeinitTapimodem1",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            deinitBtn1.Clicked += deinitBtn1_Clicked;
+
+            Content = new StackLayout
+            {
+                VerticalOptions = LayoutOptions.Center,
+                Children = {
+                        cpNameBtn, initBtn0, deinitBtn0, initBtn1, deinitBtn1
+                    }
+            };
+        }
+
+        private void deinitBtn1_Clicked(object sender, EventArgs e)
+        {
+            try
+            {
+                if (Globals.handleModem1 != null)
+                {
+                    TapiManager.DeinitTapi(Globals.handleModem1);
+                    Log.Debug(Globals.LogTag, "Deinit tapi is successful");
+                }
+                else
+                    Log.Debug(Globals.LogTag, "TapiHandle is null");
+                //Get the state of Tapi
+                Log.Debug(Globals.LogTag, "Tapi state = " + TapiManager.State);
+            }
+
+            catch (Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "inside deinit tapi exception = " + ex.ToString());
+            }
+        }
+
+        private void deinitBtn0_Clicked(object sender, EventArgs e)
+        {
+            try
+            {
+                if (Globals.handleModem0 != null)
+                {
+                    TapiManager.DeinitTapi(Globals.handleModem0);
+                    Log.Debug(Globals.LogTag, "Deinit tapi is successful");
+                }
+                else
+                    Log.Debug(Globals.LogTag, "TapiHandle is null");
+                //Get the state of Tapi
+                Log.Debug(Globals.LogTag, "Tapi state = " + TapiManager.State);
+            }
+
+            catch (Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "inside deinit tapi exception = " + ex.ToString());
+            }
+        }
+
+        private void initBtn1_Clicked(object sender, EventArgs e)
+        {
+            try
+            {
+                Globals.handleModem1 = TapiManager.InitTapi(cplist[1]);
+                if (Globals.handleModem1 == null)
+                    Log.Debug(Globals.LogTag, "Init tapi is not successful and TapiHandle is null");
+                else
+                    Log.Debug(Globals.LogTag, "Init tapi is successful");
+                //Get the state of Tapi
+                Log.Debug(Globals.LogTag, "Tapi state = " + TapiManager.State);
+            }
+
+            catch (Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "inside init tapi exception = " + ex.ToString());
+            }
+        }
+
+        private void initBtn0_Clicked(object sender, EventArgs e)
+        {
+            try
+            {
+                Globals.handleModem0 = TapiManager.InitTapi(cplist[0]);
+                if (Globals.handleModem0 == null)
+                    Log.Debug(Globals.LogTag, "Init tapi is not successful and TapiHandle is null");
+                else
+                    Log.Debug(Globals.LogTag, "Init tapi is successful");
+                //Get the state of Tapi
+                Log.Debug(Globals.LogTag, "Tapi state = " + TapiManager.State);
+            }
+
+            catch (Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "inside init tapi exception = " + ex.ToString());
+            }
+        }
+
+        private void cpNameBtn_Clicked(object sender, EventArgs e)
+        {
+            try
+            {
+                cplist = TapiManager.GetCpNames().ToList();
+                if (cplist != null)
+                {
+                    Log.Debug(Globals.LogTag, "inside common button clicked ");
+                    for (int i = 0; i < cplist.Count; i++)
+                        Log.Debug(Globals.LogTag, "in test code = " + cplist[i]);
+
+                    //Get the state of Tapi
+                    Log.Debug(Globals.LogTag, "Tapi state = " + TapiManager.State);
+                }
+            }
+
+            catch (Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "Getcpnames throw exception = " + ex.ToString());
+            }
+        }
+    }
+}
diff --git a/test/Tizen.Tapitest/MainPage.cs b/test/Tizen.Tapitest/MainPage.cs
new file mode 100755 (executable)
index 0000000..5b6fda6
--- /dev/null
@@ -0,0 +1,44 @@
+using System;
+using Xamarin.Forms;
+
+namespace XamarinForTizen.Tizen
+{
+    public class MainPage : ContentPage
+    {
+        public MainPage()
+        {
+            var commonBtn = new Button
+            {
+                Text = "Common",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            commonBtn.Clicked += CommonBtn_Clicked;
+
+            var modemBtn = new Button
+            {
+                Text = "Modem",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            modemBtn.Clicked += ModemBtn_Clicked;
+            Content = new StackLayout
+            {
+                VerticalOptions = LayoutOptions.Center,
+                Children = {
+                        commonBtn, modemBtn
+                    }
+            };
+        }
+
+        private async void ModemBtn_Clicked(object sender, EventArgs e)
+        {
+            await Navigation.PushAsync(new ModemPage());
+        }
+
+        private async void CommonBtn_Clicked(object sender, EventArgs e)
+        {
+            await Navigation.PushAsync(new CommonPage());
+        }
+    }
+}
diff --git a/test/Tizen.Tapitest/ModemPage.cs b/test/Tizen.Tapitest/ModemPage.cs
new file mode 100755 (executable)
index 0000000..451d424
--- /dev/null
@@ -0,0 +1,294 @@
+using System;
+using Xamarin.Forms;
+using Tizen;
+using Tizen.Tapi;
+using System.Threading.Tasks;
+
+namespace XamarinForTizen.Tizen
+{
+    public class ModemPage : ContentPage
+    {
+        Modem modem = null;
+        public ModemPage()
+        {
+            try
+            {
+                modem = new Modem(Globals.handleModem0);
+            }
+
+            catch(Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "Modem constructor throws exception = " + ex.ToString());
+            }
+
+            var processPowerCommandBtn = new Button
+            {
+                Text = "ProcessPowerCommand",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            processPowerCommandBtn.Clicked += processPowerBtn_Clicked;
+
+            var flightModeBtn = new Button
+            {
+                Text = "SetGetFlightMode",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            flightModeBtn.Clicked += FlightModeBtn_Clicked;
+
+            var miscMeVersionBtn = new Button
+            {
+                Text = "GetMiscMeVersion_async_and_sync",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            miscMeVersionBtn.Clicked += MiscVersionBtn_Clicked;
+
+            var miscMeSnBtn = new Button
+            {
+                Text = "GetMiscMeSn_async_and_sync",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            miscMeSnBtn.Clicked += MiscMeSnBtn_Clicked;
+
+            var miscMeImeiBtn = new Button
+            {
+                Text = "GetMiscMeImei_async_and_sync",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            miscMeImeiBtn.Clicked += MiscMeImeiBtn_Clicked;
+
+            var checkPowerBtn = new Button
+            {
+                Text = "CheckPowerStatus",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            checkPowerBtn.Clicked += CheckPowerBtn_Clicked;
+
+            var deviceInfoBtn = new Button
+            {
+                Text = "GetDeviceInfo",
+                VerticalOptions = LayoutOptions.Start,
+                HorizontalOptions = LayoutOptions.FillAndExpand
+            };
+            deviceInfoBtn.Clicked += DeviceInfoBtn_Clicked;
+
+            Content = new StackLayout
+            {
+                VerticalOptions = LayoutOptions.Center,
+                Children = {
+                        processPowerCommandBtn, flightModeBtn, miscMeVersionBtn, miscMeSnBtn, miscMeImeiBtn, checkPowerBtn, deviceInfoBtn
+                    }
+            };
+        }
+
+        private async void DeviceInfoBtn_Clicked(object sender, EventArgs e)
+        {
+            try
+            {
+                Log.Debug(Globals.LogTag, "GetDeviceInfo call start");
+                MiscDeviceInfo info = await modem.GetDeviceInfo();
+                if (info!= null)
+                {
+                    Log.Debug(Globals.LogTag, "MiscDeviceInfo data is -- ");
+                    Log.Debug(Globals.LogTag, "DeviceName = " + info.DeviceName);
+                    Log.Debug(Globals.LogTag, "VendorName = " + info.VendorName);
+                }
+                Log.Debug(Globals.LogTag, "GetDeviceInfo call end");
+            }
+
+            catch (Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "Getdeviceinfo ,exception = " + ex.ToString());
+            }
+        }
+
+        private void CheckPowerBtn_Clicked(object sender, EventArgs e)
+        {
+            try
+            {
+                Log.Debug(Globals.LogTag, "CheckPowerStatus call start");
+                PhonePowerStatus status = modem.CheckPowerStatus();
+                Log.Debug(Globals.LogTag, "power status = " + status);
+                Log.Debug(Globals.LogTag, "CheckPowerStatus call end");
+            }
+
+            catch (Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "CheckPowerStatus ,exception = " + ex.ToString());
+            }
+        }
+
+        private async void MiscMeImeiBtn_Clicked(object sender, EventArgs e)
+        {
+            try
+            {
+                Log.Debug(Globals.LogTag, "GetMiscMeImei async call start");
+                string info = await modem.GetMiscMeImei();
+                if (info != null)
+                {
+                    Log.Debug(Globals.LogTag, "MiscImei number is -- " + info);
+                }
+
+                Log.Debug(Globals.LogTag, "GetMiscMeImei async call end");
+                Log.Debug(Globals.LogTag, "GetMiscMeImei sync call start");
+                string infosync = modem.MiscMeImeiSync;
+                if (infosync != null)
+                {
+                    Log.Debug(Globals.LogTag, "MiscImei number is -- " +infosync);
+                }
+
+                Log.Debug(Globals.LogTag, "GetMiscMeImei sync call end");
+            }
+
+            catch (Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "GetMiscMeImei ,exception = " + ex.ToString());
+            }
+        }
+
+        private async void MiscMeSnBtn_Clicked(object sender, EventArgs e)
+        {
+            try
+            {
+                Log.Debug(Globals.LogTag, "GetMiscMeSn async call start");
+                MiscSerialNumberInformation info = await modem.GetMiscMeSn();
+                if (info != null)
+                {
+                    Log.Debug(Globals.LogTag, "MiscSerialNumberInformation data is -- ");
+                    Log.Debug(Globals.LogTag, "Esn = " + info.Esn);
+                    Log.Debug(Globals.LogTag, "Imei = " + info.Imei);
+                    Log.Debug(Globals.LogTag, "ImeiSv = " + info.ImeiSv);
+                    Log.Debug(Globals.LogTag, "Meid = " + info.MeId);
+                }
+
+                Log.Debug(Globals.LogTag, "GetMiscMeSn async call end");
+                Log.Debug(Globals.LogTag, "GetMiscMeSn sync call start");
+                MiscSerialNumberInformation infosync = modem.MiscMeSnSync;
+                if (infosync != null)
+                {
+                    Log.Debug(Globals.LogTag, "MiscSerialNumberInformation data is -- ");
+                    Log.Debug(Globals.LogTag, "Esn = " + infosync.Esn);
+                    Log.Debug(Globals.LogTag, "Imei = " + infosync.Imei);
+                    Log.Debug(Globals.LogTag, "ImeiSv = " + infosync.ImeiSv);
+                    Log.Debug(Globals.LogTag, "Meid = " + infosync.MeId);
+                }
+
+                Log.Debug(Globals.LogTag, "GetMiscMeSn sync call end");
+            }
+
+            catch (Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "GetMiscMeSn ,exception = " + ex.ToString());
+            }
+        }
+
+        private async void FlightModeBtn_Clicked(object sender, EventArgs e)
+        {
+            try
+            {
+                Log.Debug(Globals.LogTag, "Modem flightmode call start");
+                await modem.SetFlightMode(PowerFlightModeRequest.Enter);
+                Log.Debug(Globals.LogTag, "Modem flightmode set Enter success");
+                bool isFlightMode = await modem.GetFlightMode();
+                Log.Debug(Globals.LogTag, "Modem flightmode get success , flightmode = "+ isFlightMode);
+                await modem.SetFlightMode(PowerFlightModeRequest.Leave);
+                Log.Debug(Globals.LogTag, "Modem flightmode set Leave success");
+                isFlightMode = await modem.GetFlightMode();
+                Log.Debug(Globals.LogTag, "Modem flightmode get success , flightmode = " + isFlightMode);
+            }
+
+            catch (Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "Modem flightmode ,exception = " + ex.ToString());
+            }
+        }
+
+        private async void processPowerBtn_Clicked(object sender, EventArgs e)
+        {
+            TapiHandle handle = Globals.handleModem0;
+            try
+            {
+                handle.NotificationChanged += Handle_NotiPowerStatusChanged;
+                handle.RegisterNotiEvent(Notification.ModemPower);
+                Log.Debug(Globals.LogTag, "Modem powercommand call start");
+                await modem.ProcessPowerCommand(PhonePowerCommand.Off);
+                Log.Debug(Globals.LogTag, "Modem powercommand call off success");
+            }
+
+            catch(Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "Modem processpower command ,exception = " + ex.ToString());
+            }
+
+            finally
+            {
+                handle.DeregisterNotiEvent(Notification.ModemPower);
+                handle.NotificationChanged -= Handle_NotiPowerStatusChanged;
+            }
+        }
+
+        private async void MiscVersionBtn_Clicked(object sender, EventArgs e)
+        {
+            try
+            {
+                Log.Debug(Globals.LogTag, "GetMiscMeVersion async call start");
+                MiscVersionInformation info = await modem.GetMiscMeVersion();
+                if (info!=null)
+                {
+                    Log.Debug(Globals.LogTag, "MiscVersionInformation data is -- ");
+                    Log.Debug(Globals.LogTag, "Version = " + info.VersionMask.ToString());
+                    Log.Debug(Globals.LogTag, "CalculationDate = " + info.CalculationDate);
+                    Log.Debug(Globals.LogTag, "Erinam = " + info.EriNam.ToString());
+                    Log.Debug(Globals.LogTag, "EriVersion = " + info.EriVersion);
+                    Log.Debug(Globals.LogTag, "Hwversion = " + info.HwVersion);
+                    Log.Debug(Globals.LogTag, "Swversion = " + info.SwVersion);
+                    Log.Debug(Globals.LogTag, "ModelId = " + info.ModelId);
+                    Log.Debug(Globals.LogTag, "Prlnam = " + info.PrlNam.ToString());
+                    Log.Debug(Globals.LogTag, "Prlversion = " + info.PrlVersion);
+                    Log.Debug(Globals.LogTag, "Productcode = " + info.ProductCode);
+                }
+
+                Log.Debug(Globals.LogTag, "GetMiscMeVersion async call end");
+                Log.Debug(Globals.LogTag, "GetMiscMeVersion sync call start");
+                MiscVersionInformation infosync = modem.MiscMeVersionSync;
+                if (infosync != null)
+                {
+                    Log.Debug(Globals.LogTag, "MiscVersionInformation data is -- ");
+                    Log.Debug(Globals.LogTag, "Version = " + infosync.VersionMask.ToString());
+                    Log.Debug(Globals.LogTag, "CalculationDate = " + infosync.CalculationDate);
+                    Log.Debug(Globals.LogTag, "Erinam = " + infosync.EriNam.ToString());
+                    Log.Debug(Globals.LogTag, "EriVersion = " + infosync.EriVersion);
+                    Log.Debug(Globals.LogTag, "Hwversion = " + infosync.HwVersion);
+                    Log.Debug(Globals.LogTag, "Swversion = " + infosync.SwVersion);
+                    Log.Debug(Globals.LogTag, "ModelId = " + infosync.ModelId);
+                    Log.Debug(Globals.LogTag, "Prlnam = " + infosync.PrlNam.ToString());
+                    Log.Debug(Globals.LogTag, "Prlversion = " + infosync.PrlVersion);
+                    Log.Debug(Globals.LogTag, "Productcode = " + infosync.ProductCode);
+                }
+
+                Log.Debug(Globals.LogTag, "GetMiscMeVersion sync call end");
+            }
+
+            catch(Exception ex)
+            {
+                Log.Debug(Globals.LogTag, "GetMiscMeVersion ,exception = " + ex.ToString());
+            }
+        }
+
+        private void Handle_PropertyPowerStatusChanged(object sender, PropertyChangedEventArgs e)
+        {
+            Log.Debug(Globals.LogTag, "Handle_PropertyPowerStatusChanged event receive");
+            //Log.Debug(Globals.LogTag, "Handle_PropertyPowerStatusChanged event receive, status = " + e.Data + e.Property);
+        }
+
+        private void Handle_NotiPowerStatusChanged(object sender, NotificationChangedEventArgs e)
+        {
+            Log.Debug(Globals.LogTag, "Handle_NotiPowerStatusChanged event receive, status = " + e.Data + ", Notification Value = " +e.Id);
+        }
+    }
+}
diff --git a/test/Tizen.Tapitest/Program.cs b/test/Tizen.Tapitest/Program.cs
new file mode 100755 (executable)
index 0000000..493955b
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ *  Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License
+ */
+
+using Xamarin.Forms;
+using Tizen;
+using Tizen.System;
+using Tizen.Tapi;
+
+namespace XamarinForTizen.Tizen
+{
+    internal class Globals
+    {
+        internal static string LogTag = "Tapitest";
+
+        internal static TapiHandle handleModem0 = null;
+        internal static TapiHandle handleModem1 = null;
+    }
+    public class App : Application
+    {
+        private static bool s_isTapiSupported = false;
+        public App()
+        {
+            SystemInfo.TryGetValue("http://tizen.org/feature/network.telephony", out s_isTapiSupported);
+            if (s_isTapiSupported)
+            {
+                Log.Debug(Globals.LogTag, "tapi feature check = " + s_isTapiSupported);
+                MainPage = new NavigationPage(new MainPage());
+            }
+
+            else
+            {
+                Log.Debug(Globals.LogTag, "tapi feature is not supported");
+            }
+        }
+
+        protected override void OnStart()
+        {
+            // Handle when your app starts
+        }
+
+        protected override void OnSleep()
+        {
+            // Handle when your app sleeps
+        }
+
+        protected override void OnResume()
+        {
+            // Handle when your app resumes
+        }
+    }
+
+    class Program : global::Xamarin.Forms.Platform.Tizen.FormsApplication
+    {
+        private static App _app;
+        protected override void OnCreate()
+        {
+            base.OnCreate();
+
+            Log.Debug(Globals.LogTag, "OnCreate()");
+            _app = new App();
+            LoadApplication(_app);
+        }
+
+        public static App getApp()
+        {
+            return _app;
+        }
+        static void Main(string[] args)
+        {
+            Log.Debug(Globals.LogTag, "inside main");
+            var app = new Program();
+            global::Xamarin.Forms.Platform.Tizen.Forms.Init(app);
+            app.Run(args);
+        }
+    }
+}
\ No newline at end of file
diff --git a/test/Tizen.Tapitest/Properties/AssemblyInfo.cs b/test/Tizen.Tapitest/Properties/AssemblyInfo.cs
new file mode 100755 (executable)
index 0000000..eba0bf0
--- /dev/null
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Tizen.Tapitest")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Samsung Electronics")]
+[assembly: AssemblyProduct("Tizen.Tapitest")]
+[assembly: AssemblyCopyright("Copyright © Samsung Electronics 2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components.  If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("F2650ABF-4EC2-42A2-AF37-43216A3AC15E")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/test/Tizen.Tapitest/Tizen.Tapitest.csproj b/test/Tizen.Tapitest/Tizen.Tapitest.csproj
new file mode 100755 (executable)
index 0000000..cabf02d
--- /dev/null
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <PropertyGroup>\r
+    <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>\r
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+    <ProductVersion>8.0.30703</ProductVersion>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
+    <ProjectTypeGuids>{2F98DAC9-6F16-457B-AED7-D43CAC379341};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\r
+    <ProjectGuid>{BC2C461D-A67A-47FF-8AAA-D584BD379226}</ProjectGuid>\r
+    <OutputType>Exe</OutputType>\r
+    <AppDesignerFolder>Properties</AppDesignerFolder>\r
+    <RootNamespace>Tizen.Tapitest</RootNamespace>\r
+    <AssemblyName>Tizen.Tapitest</AssemblyName>\r
+    <FileAlignment>512</FileAlignment>\r
+    <DefaultLanguage>en-US</DefaultLanguage>\r
+  </PropertyGroup>\r
+  <PropertyGroup>\r
+    <TargetFrameworkIdentifier>.NETCoreApp</TargetFrameworkIdentifier>\r
+    <TargetFrameworkVersion>v1.0</TargetFrameworkVersion>\r
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
+    <NuGetTargetMoniker>.NETCoreApp,Version=v1.0</NuGetTargetMoniker>\r
+    <TargetFrameworkMoniker>.NETCoreApp,Version=v1.0</TargetFrameworkMoniker>\r
+    <NoStdLib>true</NoStdLib>\r
+    <NoWarn>$(NoWarn);1701</NoWarn>\r
+    <UseVSHostingProcess>false</UseVSHostingProcess>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+    <DebugSymbols>true</DebugSymbols>\r
+    <DebugType>full</DebugType>\r
+    <Optimize>false</Optimize>\r
+    <OutputPath>bin\Debug\</OutputPath>\r
+    <DefineConstants>DEBUG;TRACE</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+    <DebugType>pdbonly</DebugType>\r
+    <Optimize>true</Optimize>\r
+    <OutputPath>bin\Release\</OutputPath>\r
+    <DefineConstants>TRACE</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <ItemGroup>\r
+    <None Include="Tizen.Tapitest.project.json" />\r
+    <None Include="tizen-manifest.xml" />\r
+    <None Include="shared\res\Tizen.Tapitest.png" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Compile Include="CommonPage.cs" />\r
+    <Compile Include="ModemPage.cs" />\r
+    <Compile Include="MainPage.cs" />\r
+    <Compile Include="Program.cs" />\r
+    <Compile Include="Properties\AssemblyInfo.cs" />\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\Tizen.Tapi\Tizen.Tapi.csproj">\r
+      <Project>{5bf0618d-32ca-4356-b25b-11bdfd0e6119}</Project>\r
+      <Name>Tizen.Tapi</Name>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <Import Project="$(MSBuildExtensionsPath)\Tizen\Tizen.CSharp.GBS.targets" Condition="Exists('$(MSBuildExtensionsPath)\Tizen\Tizen.CSharp.GBS.targets')" />\r
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+        Other similar extension points exist, see Microsoft.Common.targets.
+    <Target Name="BeforeBuild">
+    </Target>
+    <Target Name="AfterBuild">
+    </Target>
+    -->\r
+  <PropertyGroup>\r
+    <!-- https://github.com/dotnet/corefxlab/tree/master/samples/NetCoreSample and
+             https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/target-dotnetcore-with-msbuild
+        -->\r
+    <!-- We don't use any of MSBuild's resolution logic for resolving the framework, so just set these two
+             properties to any folder that exists to skip the GetReferenceAssemblyPaths task (not target) and
+             to prevent it from outputting a warning (MSB3644).
+        -->\r
+    <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory)</_TargetFrameworkDirectories>\r
+    <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory)</_FullFrameworkReferenceAssemblyPaths>\r
+    <AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>\r
+  </PropertyGroup>\r
+  <!-- Include tasks for Tizen -->\r
+  <PropertyGroup>\r
+    <TizenBuildPath>$(MSBuildExtensionsPath)\Tizen</TizenBuildPath>\r
+    <TizenToolsPath>$(TizenBuildPath)\bin</TizenToolsPath>\r
+  </PropertyGroup>\r
+  <UsingTask TaskName="Tizen.Tasks.SignPackage.TizenCleanPackageSource" AssemblyFile="$(TizenToolsPath)\Tizen.Tasks.SignPackage.dll" />\r
+  <UsingTask TaskName="Tizen.Tasks.SignPackage.TizenPreparePackageManifest" AssemblyFile="$(TizenToolsPath)\Tizen.Tasks.SignPackage.dll" />\r
+  <UsingTask TaskName="Tizen.Tasks.SignPackage.TizenPreparePackageSource" AssemblyFile="$(TizenToolsPath)\Tizen.Tasks.SignPackage.dll" />\r
+  <UsingTask TaskName="Tizen.Tasks.SignPackage.TizenSignPackage" AssemblyFile="$(TizenToolsPath)\Tizen.Tasks.SignPackage.dll" />\r
+  <!-- Task to clean package source -->\r
+  <Target Name="_TizenCleanPkgSrc">\r
+    <TizenCleanPackageSource SolutionPath="$(SolutionPath)" ProjectPath="$(MSBuildProjectFullPath)" />\r
+  </Target>\r
+  <!-- Task to prepare tizen-manifest.xml file -->\r
+  <Target Name="_TizenPrepManifest">\r
+    <TizenPreparePackageManifest SolutionPath="$(SolutionPath)" ProjectPath="$(MSBuildProjectFullPath)" />\r
+  </Target>\r
+  <!-- Task to prepare package sources(executable, dlls, resource files) -->\r
+  <Target Name="_TizenPrepPkgSrc">\r
+    <TizenPreparePackageSource SolutionPath="$(SolutionPath)" ProjectPath="$(MSBuildProjectFullPath)" AssemblyName="$(AssemblyName)" TargetPath="$(TargetPath)" />\r
+  </Target>\r
+  <!-- Task to signing and packaging -->\r
+  <Target Name="_TizenSignPackge">\r
+    <TizenSignPackage SolutionPath="$(SolutionPath)" ProjectPath="$(MSBuildProjectFullPath)" SolutionName="$(SolutionName)" AuthorCertificate="$(AuthorCertificate)" AuthorPasswd="$(AuthorPasswd)" DistribCertificate="$(DistribCertificate)" DistribPasswd="$(DistribPasswd)" />\r
+  </Target>\r
+  <ProjectExtensions>\r
+    <VisualStudio>\r
+      <FlavorProperties GUID="{2F98DAC9-6F16-457B-AED7-D43CAC379341}" Configuration="Debug|Any CPU">\r
+        <ProjectCommonFlavorCfg />\r
+      </FlavorProperties>\r
+      <FlavorProperties GUID="{2F98DAC9-6F16-457B-AED7-D43CAC379341}" Configuration="Release|Any CPU">\r
+        <ProjectCommonFlavorCfg />\r
+      </FlavorProperties>\r
+    </VisualStudio>\r
+  </ProjectExtensions>\r
+</Project>
\ No newline at end of file
diff --git a/test/Tizen.Tapitest/Tizen.Tapitest.nuget.targets b/test/Tizen.Tapitest/Tizen.Tapitest.nuget.targets
new file mode 100755 (executable)
index 0000000..8f05402
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>\r
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">\r
+    <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>\r
+    <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>\r
+    <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">A:\Desktop\csbinding\seventeen\submit\tapi\Tizen.Tapitest\Tizen.Tapitest.project.lock.json</ProjectAssetsFile>\r
+    <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>\r
+    <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\shikha.n\.nuget\packages\</NuGetPackageFolders>\r
+    <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">ProjectJson</NuGetProjectStyle>\r
+    <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">4.2.0</NuGetToolVersion>\r
+  </PropertyGroup>\r
+  <PropertyGroup>\r
+    <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>\r
+  </PropertyGroup>\r
+  <ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">\r
+    <Import Project="$(NuGetPackageRoot)xamarin.forms\2.3.5.239-pre3\build\netstandard1.0\Xamarin.Forms.targets" Condition="Exists('$(NuGetPackageRoot)xamarin.forms\2.3.5.239-pre3\build\netstandard1.0\Xamarin.Forms.targets')" />\r
+  </ImportGroup>\r
+</Project>
\ No newline at end of file
diff --git a/test/Tizen.Tapitest/Tizen.Tapitest.project.json b/test/Tizen.Tapitest/Tizen.Tapitest.project.json
new file mode 100755 (executable)
index 0000000..857f342
--- /dev/null
@@ -0,0 +1,27 @@
+{\r
+  "buildOptions": {\r
+    "emitEntryPoint": true,\r
+    "debugType": "portable",\r
+    "platform": "AnyCPU",\r
+    "preserveCompilationContext": true\r
+  },\r
+  "dependencies": {\r
+    "ElmSharp": "1.2.0-beta-001",\r
+    "Microsoft.NETCore.App": "1.1.1",\r
+    "Tizen.Applications.UI": "1.5.8",\r
+    "Xamarin.Forms": "2.3.5.239-pre3",\r
+    "Xamarin.Forms.Platform.Tizen": "2.3.5-r233-008"\r
+  },\r
+  "runtimes": {\r
+    "win": {},\r
+    "linux": {}\r
+  },\r
+  "frameworks": {\r
+    "netcoreapp1.0": {\r
+      "imports": [\r
+        "portable-net45+wp80+win81+wpa81",\r
+        "netstandard1.6"\r
+      ]\r
+    }\r
+  }\r
+}
\ No newline at end of file
diff --git a/test/Tizen.Tapitest/shared/res/Tizen.Tapitest.png b/test/Tizen.Tapitest/shared/res/Tizen.Tapitest.png
new file mode 100755 (executable)
index 0000000..9765b1b
Binary files /dev/null and b/test/Tizen.Tapitest/shared/res/Tizen.Tapitest.png differ
diff --git a/test/Tizen.Tapitest/tizen-manifest.xml b/test/Tizen.Tapitest/tizen-manifest.xml
new file mode 100755 (executable)
index 0000000..c94aac1
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest package="Tizen.Tapitest" version="1.0.0" api-version="3.0" xmlns="http://tizen.org/ns/packages">
+  <profile name="common" />
+  <ui-application appid="Tizen.Tapitest" exec="Tizen.Tapitest.exe" multiple="false" taskmanage="true" splash-screen-display="true" type="dotnet" launch_mode="single">
+    <icon>Tizen.Tapitest.png</icon>
+    <label>Tizen.Tapitest</label>
+  </ui-application>
+  <shortcut-list />
+  <privileges>
+    <privilege>http://tizen.org/privilege/telephony</privilege>
+    <privilege>http://tizen.org/privilege/telephony.admin</privilege>
+  </privileges>
+</manifest>