diff --git a/build/vsx/LibLinphone/LibLinphone.vcxproj b/build/vsx/LibLinphone/LibLinphone.vcxproj
index 57a94e932..7b1119321 100644
--- a/build/vsx/LibLinphone/LibLinphone.vcxproj
+++ b/build/vsx/LibLinphone/LibLinphone.vcxproj
@@ -131,9 +131,12 @@
false
false
true
- belle-sip_dll.lib;mediastreamer2_dll.lib;ws2_32.lib;ortp_dll.lib;gsm_dll.lib;speex_dll.lib;speexdsp_dll.lib;%(AdditionalDependencies)
+ ws2_32.lib;%(AdditionalDependencies)
$(SolutionDir)$(Platform)\$(Configuration);%(AdditionalLibraryDirectories)
$(TargetDir)$(TargetName)_dll.lib
+ ole32.lib;%(IgnoreSpecificDefaultLibraries)
+
+
$(TargetDir)$(TargetName)_dll.lib;%(Outputs)
@@ -213,6 +216,9 @@
{027bad0e-9179-48c1-9733-7aa7e2c2ec70}
+
+ {d22bd217-d0f8-4274-9b3a-f3f35f46482c}
+
{ffc7b532-0502-4d88-ac98-9e89071cbc97}
false
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8.sln b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8.sln
new file mode 100644
index 000000000..4729f06a0
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8.sln
@@ -0,0 +1,284 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibLinphoneTester-wp8", "LibLinphoneTester-wp8\LibLinphoneTester-wp8.csproj", "{34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534} = {5E94A00B-B14A-4E42-8284-8CB0EF099534}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibLinphone", "..\LibLinphone\LibLinphone.vcxproj", "{08DD0D38-D9B5-4626-B60D-B4D76B571142}"
+ ProjectSection(ProjectDependencies) = postProject
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C} = {D22BD217-D0F8-4274-9B3A-F3F35F46482C}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibLinphoneTester", "..\LibLinphoneTester\LibLinphoneTester.vcxproj", "{5E94A00B-B14A-4E42-8284-8CB0EF099534}"
+ ProjectSection(ProjectDependencies) = postProject
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4} = {902DAF1D-EBF1-4D03-B598-143500A50AB4}
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142} = {08DD0D38-D9B5-4626-B60D-B4D76B571142}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "belle-sip", "..\..\..\..\belle-sip\build\windows\belle-sip\belle-sip.vcxproj", "{4C225A82-800B-427B-BA7B-61686A9B347F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mediastreamer2", "..\..\..\..\mediastreamer2\build\vsx\mediastreamer2\mediastreamer2\mediastreamer2.vcxproj", "{027BAD0E-9179-48C1-9733-7AA7E2C2EC70}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "oRTP", "..\..\..\..\oRTP\build\vsx\oRTP\oRTP\oRTP.vcxproj", "{FFC7B532-0502-4D88-AC98-9E89071CBC97}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libantlr3c", "..\..\..\..\antlr3\runtime\C\build\vsx\libantlr3c\libantlr3c.vcxproj", "{8FA74260-151B-429B-83EF-3CF3EAC8CFD9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsm", "..\..\..\..\gsm\build\windows\gsm\gsm\gsm.vcxproj", "{746EA080-5BA9-42C5-9E52-EA421C3F3AFD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "speex", "..\..\..\..\speex\build\windows\speex\speex\speex.vcxproj", "{D5EC8C11-C1D9-47E3-BB82-A93C300FD902}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "speexdsp", "..\..\..\..\speex\build\windows\speex\speexdsp\speexdsp.vcxproj", "{6BD78980-9C71-4341-8775-AD19E9EC7305}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cunit", "..\..\..\..\cunit\build\windows\cunit\cunit.vcxproj", "{902DAF1D-EBF1-4D03-B598-143500A50AB4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmswasapi", "..\..\..\..\mswasapi\mswasapi\mswasapi\mswasapi.vcxproj", "{D22BD217-D0F8-4274-9B3A-F3F35F46482C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|ARM = Debug|ARM
+ Debug|Mixed Platforms = Debug|Mixed Platforms
+ Debug|Win32 = Debug|Win32
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|ARM = Release|ARM
+ Release|Mixed Platforms = Release|Mixed Platforms
+ Release|Win32 = Release|Win32
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|ARM.ActiveCfg = Debug|ARM
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|ARM.Build.0 = Debug|ARM
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|ARM.Deploy.0 = Debug|ARM
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|Mixed Platforms.Build.0 = Debug|ARM
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|Mixed Platforms.Deploy.0 = Debug|ARM
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|Win32.ActiveCfg = Debug|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|Win32.Build.0 = Debug|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|Win32.Deploy.0 = Debug|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|x86.ActiveCfg = Debug|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|x86.Build.0 = Debug|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Debug|x86.Deploy.0 = Debug|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|Any CPU.Build.0 = Release|Any CPU
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|ARM.ActiveCfg = Release|ARM
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|ARM.Build.0 = Release|ARM
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|ARM.Deploy.0 = Release|ARM
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|Mixed Platforms.Build.0 = Release|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|Mixed Platforms.Deploy.0 = Release|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|Win32.ActiveCfg = Release|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|Win32.Build.0 = Release|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|Win32.Deploy.0 = Release|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|x86.ActiveCfg = Release|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|x86.Build.0 = Release|x86
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}.Release|x86.Deploy.0 = Release|x86
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Debug|ARM.ActiveCfg = Debug|ARM
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Debug|ARM.Build.0 = Debug|ARM
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Debug|Mixed Platforms.Build.0 = Debug|ARM
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Debug|Win32.ActiveCfg = Debug|Win32
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Debug|Win32.Build.0 = Debug|Win32
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Debug|x86.ActiveCfg = Debug|Win32
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Debug|x86.Build.0 = Debug|Win32
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Release|Any CPU.ActiveCfg = Release|Win32
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Release|ARM.ActiveCfg = Release|ARM
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Release|ARM.Build.0 = Release|ARM
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Release|Win32.ActiveCfg = Release|Win32
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Release|Win32.Build.0 = Release|Win32
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Release|x86.ActiveCfg = Release|Win32
+ {08DD0D38-D9B5-4626-B60D-B4D76B571142}.Release|x86.Build.0 = Release|Win32
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Debug|ARM.ActiveCfg = Debug|ARM
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Debug|ARM.Build.0 = Debug|ARM
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Debug|Mixed Platforms.Build.0 = Debug|ARM
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Debug|Win32.Build.0 = Debug|Win32
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Debug|x86.ActiveCfg = Debug|Win32
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Debug|x86.Build.0 = Debug|Win32
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Release|Any CPU.ActiveCfg = Release|Win32
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Release|ARM.ActiveCfg = Release|ARM
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Release|ARM.Build.0 = Release|ARM
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Release|Win32.ActiveCfg = Release|Win32
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Release|Win32.Build.0 = Release|Win32
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Release|x86.ActiveCfg = Release|Win32
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}.Release|x86.Build.0 = Release|Win32
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|ARM.ActiveCfg = Debug|ARM
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|ARM.Build.0 = Debug|ARM
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|Mixed Platforms.Build.0 = Debug|ARM
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|Win32.Build.0 = Debug|Win32
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|x86.ActiveCfg = Debug|Win32
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|x86.Build.0 = Debug|Win32
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|Any CPU.ActiveCfg = Release|Win32
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|ARM.ActiveCfg = Release|ARM
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|ARM.Build.0 = Release|ARM
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|Win32.ActiveCfg = Release|Win32
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|Win32.Build.0 = Release|Win32
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|x86.ActiveCfg = Release|Win32
+ {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|x86.Build.0 = Release|Win32
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Debug|ARM.ActiveCfg = Debug|ARM
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Debug|ARM.Build.0 = Debug|ARM
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Debug|Mixed Platforms.Build.0 = Debug|ARM
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Debug|Win32.ActiveCfg = Debug|Win32
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Debug|Win32.Build.0 = Debug|Win32
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Debug|x86.ActiveCfg = Debug|Win32
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Debug|x86.Build.0 = Debug|Win32
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Release|Any CPU.ActiveCfg = Release|Win32
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Release|ARM.ActiveCfg = Release|ARM
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Release|ARM.Build.0 = Release|ARM
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Release|Win32.ActiveCfg = Release|Win32
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Release|Win32.Build.0 = Release|Win32
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Release|x86.ActiveCfg = Release|Win32
+ {027BAD0E-9179-48C1-9733-7AA7E2C2EC70}.Release|x86.Build.0 = Release|Win32
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Debug|ARM.ActiveCfg = Debug|ARM
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Debug|ARM.Build.0 = Debug|ARM
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Debug|Mixed Platforms.Build.0 = Debug|ARM
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Debug|Win32.Build.0 = Debug|Win32
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Debug|x86.ActiveCfg = Debug|Win32
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Debug|x86.Build.0 = Debug|Win32
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Release|Any CPU.ActiveCfg = Release|Win32
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Release|ARM.ActiveCfg = Release|ARM
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Release|ARM.Build.0 = Release|ARM
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Release|Win32.ActiveCfg = Release|Win32
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Release|Win32.Build.0 = Release|Win32
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Release|x86.ActiveCfg = Release|Win32
+ {FFC7B532-0502-4D88-AC98-9E89071CBC97}.Release|x86.Build.0 = Release|Win32
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|ARM.ActiveCfg = Debug|ARM
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|ARM.Build.0 = Debug|ARM
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|Mixed Platforms.Build.0 = Debug|ARM
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|Win32.Build.0 = Debug|Win32
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|x86.ActiveCfg = Debug|Win32
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|x86.Build.0 = Debug|Win32
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|Any CPU.ActiveCfg = Release|Win32
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|ARM.ActiveCfg = Release|ARM
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|ARM.Build.0 = Release|ARM
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|Win32.ActiveCfg = Release|Win32
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|Win32.Build.0 = Release|Win32
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|x86.ActiveCfg = Release|Win32
+ {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|x86.Build.0 = Release|Win32
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Debug|ARM.ActiveCfg = Debug|ARM
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Debug|ARM.Build.0 = Debug|ARM
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Debug|Mixed Platforms.Build.0 = Debug|ARM
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Debug|Win32.Build.0 = Debug|Win32
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Debug|x86.ActiveCfg = Debug|Win32
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Debug|x86.Build.0 = Debug|Win32
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Release|Any CPU.ActiveCfg = Release|Win32
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Release|ARM.ActiveCfg = Release|ARM
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Release|ARM.Build.0 = Release|ARM
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Release|Win32.ActiveCfg = Release|Win32
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Release|Win32.Build.0 = Release|Win32
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Release|x86.ActiveCfg = Release|Win32
+ {746EA080-5BA9-42C5-9E52-EA421C3F3AFD}.Release|x86.Build.0 = Release|Win32
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Debug|ARM.ActiveCfg = Debug|ARM
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Debug|ARM.Build.0 = Debug|ARM
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Debug|Mixed Platforms.Build.0 = Debug|ARM
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Debug|Win32.Build.0 = Debug|Win32
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Debug|x86.ActiveCfg = Debug|Win32
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Debug|x86.Build.0 = Debug|Win32
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Release|Any CPU.ActiveCfg = Release|Win32
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Release|ARM.ActiveCfg = Release|ARM
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Release|ARM.Build.0 = Release|ARM
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Release|Win32.ActiveCfg = Release|Win32
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Release|Win32.Build.0 = Release|Win32
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Release|x86.ActiveCfg = Release|Win32
+ {D5EC8C11-C1D9-47E3-BB82-A93C300FD902}.Release|x86.Build.0 = Release|Win32
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Debug|ARM.ActiveCfg = Debug|ARM
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Debug|ARM.Build.0 = Debug|ARM
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Debug|Mixed Platforms.Build.0 = Debug|ARM
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Debug|Win32.Build.0 = Debug|Win32
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Debug|x86.ActiveCfg = Debug|Win32
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Debug|x86.Build.0 = Debug|Win32
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Release|Any CPU.ActiveCfg = Release|Win32
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Release|ARM.ActiveCfg = Release|ARM
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Release|ARM.Build.0 = Release|ARM
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Release|Win32.ActiveCfg = Release|Win32
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Release|Win32.Build.0 = Release|Win32
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Release|x86.ActiveCfg = Release|Win32
+ {6BD78980-9C71-4341-8775-AD19E9EC7305}.Release|x86.Build.0 = Release|Win32
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|ARM.ActiveCfg = Debug|ARM
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|ARM.Build.0 = Debug|ARM
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|Mixed Platforms.ActiveCfg = Debug|ARM
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|Mixed Platforms.Build.0 = Debug|ARM
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|Win32.Build.0 = Debug|Win32
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|x86.ActiveCfg = Debug|Win32
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|x86.Build.0 = Debug|Win32
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|Any CPU.ActiveCfg = Release|Win32
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|ARM.ActiveCfg = Release|ARM
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|ARM.Build.0 = Release|ARM
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|Win32.ActiveCfg = Release|Win32
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|Win32.Build.0 = Release|Win32
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|x86.ActiveCfg = Release|Win32
+ {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|x86.Build.0 = Release|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Debug|ARM.ActiveCfg = Debug|ARM
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Debug|ARM.Build.0 = Debug|ARM
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Debug|Win32.Build.0 = Debug|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Debug|x86.ActiveCfg = Debug|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Debug|x86.Build.0 = Debug|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Release|Any CPU.ActiveCfg = Release|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Release|ARM.ActiveCfg = Release|ARM
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Release|ARM.Build.0 = Release|ARM
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Release|Win32.ActiveCfg = Release|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Release|Win32.Build.0 = Release|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Release|x86.ActiveCfg = Release|Win32
+ {D22BD217-D0F8-4274-9B3A-F3F35F46482C}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8.v11.suo b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8.v11.suo
new file mode 100644
index 000000000..1d1b41f17
Binary files /dev/null and b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8.v11.suo differ
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/App.xaml b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/App.xaml
new file mode 100644
index 000000000..ad710fdad
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/App.xaml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/App.xaml.cs b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/App.xaml.cs
new file mode 100644
index 000000000..5052b5a01
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/App.xaml.cs
@@ -0,0 +1,234 @@
+using System;
+using System.Diagnostics;
+using System.Resources;
+using System.Windows;
+using System.Windows.Markup;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using LibLinphoneTester_wp8.Resources;
+using linphone_tester_native;
+
+namespace LibLinphoneTester_wp8
+{
+ public partial class App : Application
+ {
+ ///
+ /// Provides easy access to the root frame of the Phone Application.
+ ///
+ /// The root frame of the Phone Application.
+ public static PhoneApplicationFrame RootFrame { get; private set; }
+
+ ///
+ /// Constructor for the Application object.
+ ///
+ public App()
+ {
+ // Global handler for uncaught exceptions.
+ UnhandledException += Application_UnhandledException;
+
+ // Standard XAML initialization
+ InitializeComponent();
+
+ // Phone-specific initialization
+ InitializePhoneApplication();
+
+ // Language display initialization
+ InitializeLanguage();
+
+ // Show graphics profiling information while debugging.
+ if (Debugger.IsAttached)
+ {
+ // Display the current frame rate counters.
+ Application.Current.Host.Settings.EnableFrameRateCounter = true;
+
+ // Show the areas of the app that are being redrawn in each frame.
+ //Application.Current.Host.Settings.EnableRedrawRegions = true;
+
+ // Enable non-production analysis visualization mode,
+ // which shows areas of a page that are handed off to GPU with a colored overlay.
+ //Application.Current.Host.Settings.EnableCacheVisualization = true;
+
+ // Prevent the screen from turning off while under the debugger by disabling
+ // the application's idle detection.
+ // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
+ // and consume battery power when the user is not using the phone.
+ PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
+ }
+
+ tester = new LinphoneTesterNative();
+ suite = null;
+ }
+
+ // Code to execute when the application is launching (eg, from Start)
+ // This code will not execute when the application is reactivated
+ private void Application_Launching(object sender, LaunchingEventArgs e)
+ {
+ }
+
+ // Code to execute when the application is activated (brought to foreground)
+ // This code will not execute when the application is first launched
+ private void Application_Activated(object sender, ActivatedEventArgs e)
+ {
+ }
+
+ // Code to execute when the application is deactivated (sent to background)
+ // This code will not execute when the application is closing
+ private void Application_Deactivated(object sender, DeactivatedEventArgs e)
+ {
+ }
+
+ // Code to execute when the application is closing (eg, user hit Back)
+ // This code will not execute when the application is deactivated
+ private void Application_Closing(object sender, ClosingEventArgs e)
+ {
+ }
+
+ // Code to execute if a navigation fails
+ private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
+ {
+ if (Debugger.IsAttached)
+ {
+ // A navigation has failed; break into the debugger
+ Debugger.Break();
+ }
+ }
+
+ // Code to execute on Unhandled Exceptions
+ private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
+ {
+ if (Debugger.IsAttached)
+ {
+ // An unhandled exception has occurred; break into the debugger
+ Debugger.Break();
+ }
+ }
+
+ #region Phone application initialization
+
+ // Avoid double-initialization
+ private bool phoneApplicationInitialized = false;
+
+ // Do not add any additional code to this method
+ private void InitializePhoneApplication()
+ {
+ if (phoneApplicationInitialized)
+ return;
+
+ // Create the frame but don't set it as RootVisual yet; this allows the splash
+ // screen to remain active until the application is ready to render.
+ RootFrame = new PhoneApplicationFrame();
+ RootFrame.Navigated += CompleteInitializePhoneApplication;
+
+ // Handle navigation failures
+ RootFrame.NavigationFailed += RootFrame_NavigationFailed;
+
+ // Handle reset requests for clearing the backstack
+ RootFrame.Navigated += CheckForResetNavigation;
+
+ // Ensure we don't initialize again
+ phoneApplicationInitialized = true;
+ }
+
+ // Do not add any additional code to this method
+ private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
+ {
+ // Set the root visual to allow the application to render
+ if (RootVisual != RootFrame)
+ RootVisual = RootFrame;
+
+ // Remove this handler since it is no longer needed
+ RootFrame.Navigated -= CompleteInitializePhoneApplication;
+ }
+
+ private void CheckForResetNavigation(object sender, NavigationEventArgs e)
+ {
+ // If the app has received a 'reset' navigation, then we need to check
+ // on the next navigation to see if the page stack should be reset
+ if (e.NavigationMode == NavigationMode.Reset)
+ RootFrame.Navigated += ClearBackStackAfterReset;
+ }
+
+ private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
+ {
+ // Unregister the event so it doesn't get called again
+ RootFrame.Navigated -= ClearBackStackAfterReset;
+
+ // Only clear the stack for 'new' (forward) and 'refresh' navigations
+ if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
+ return;
+
+ // For UI consistency, clear the entire page stack
+ while (RootFrame.RemoveBackEntry() != null)
+ {
+ ; // do nothing
+ }
+ }
+
+ #endregion
+
+ // Initialize the app's font and flow direction as defined in its localized resource strings.
+ //
+ // To ensure that the font of your application is aligned with its supported languages and that the
+ // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
+ // and ResourceFlowDirection should be initialized in each resx file to match these values with that
+ // file's culture. For example:
+ //
+ // AppResources.es-ES.resx
+ // ResourceLanguage's value should be "es-ES"
+ // ResourceFlowDirection's value should be "LeftToRight"
+ //
+ // AppResources.ar-SA.resx
+ // ResourceLanguage's value should be "ar-SA"
+ // ResourceFlowDirection's value should be "RightToLeft"
+ //
+ // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
+ //
+ private void InitializeLanguage()
+ {
+ try
+ {
+ // Set the font to match the display language defined by the
+ // ResourceLanguage resource string for each supported language.
+ //
+ // Fall back to the font of the neutral language if the Display
+ // language of the phone is not supported.
+ //
+ // If a compiler error is hit then ResourceLanguage is missing from
+ // the resource file.
+ RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
+
+ // Set the FlowDirection of all elements under the root frame based
+ // on the ResourceFlowDirection resource string for each
+ // supported language.
+ //
+ // If a compiler error is hit then ResourceFlowDirection is missing from
+ // the resource file.
+ FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
+ RootFrame.FlowDirection = flow;
+ }
+ catch
+ {
+ // If an exception is caught here it is most likely due to either
+ // ResourceLangauge not being correctly set to a supported language
+ // code or ResourceFlowDirection is set to a value other than LeftToRight
+ // or RightToLeft.
+
+ if (Debugger.IsAttached)
+ {
+ Debugger.Break();
+ }
+
+ throw;
+ }
+ }
+
+ public bool suiteRunning()
+ {
+ return (suite != null) && (suite.running);
+ }
+
+ public LinphoneTesterNative tester { get; set; }
+ public UnitTestSuite suite { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/AlignmentGrid.png b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/AlignmentGrid.png
new file mode 100644
index 000000000..f7d2e9780
Binary files /dev/null and b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/AlignmentGrid.png differ
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/ApplicationIcon.png b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/ApplicationIcon.png
new file mode 100644
index 000000000..7d95d4e08
Binary files /dev/null and b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/ApplicationIcon.png differ
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/FlipCycleTileLarge.png b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/FlipCycleTileLarge.png
new file mode 100644
index 000000000..e0c59ac01
Binary files /dev/null and b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/FlipCycleTileLarge.png differ
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/FlipCycleTileMedium.png b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/FlipCycleTileMedium.png
new file mode 100644
index 000000000..e93b89d60
Binary files /dev/null and b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/FlipCycleTileMedium.png differ
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/FlipCycleTileSmall.png b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/FlipCycleTileSmall.png
new file mode 100644
index 000000000..550b1b5e8
Binary files /dev/null and b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/FlipCycleTileSmall.png differ
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/IconicTileMediumLarge.png b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/IconicTileMediumLarge.png
new file mode 100644
index 000000000..686e6b53f
Binary files /dev/null and b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/IconicTileMediumLarge.png differ
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/IconicTileSmall.png b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/IconicTileSmall.png
new file mode 100644
index 000000000..d4b5ede1b
Binary files /dev/null and b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/Tiles/IconicTileSmall.png differ
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/laure_rc b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/laure_rc
new file mode 100644
index 000000000..de69db066
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/laure_rc
@@ -0,0 +1,39 @@
+[sip]
+sip_port=5092
+sip_tcp_port=5092
+sip_tls_port=5093
+default_proxy=0
+ping_with_options=0
+register_only_when_network_is_up=0
+
+[auth_info_0]
+username=laure
+userid=laure
+passwd=secret
+realm="sip.example.org"
+
+
+[proxy_0]
+reg_proxy=sip2.linphone.org
+reg_route=sip2.linphone.org
+reg_identity=sip:laure@sip.example.org
+reg_expires=3600
+reg_sendregister=1
+publish=0
+dial_escape_plus=0
+
+
+[rtp]
+audio_rtp_port=9010
+video_rtp_port=9012
+
+[video]
+display=0
+capture=0
+show_local=0
+size=vga
+enabled=0
+self_view=0
+automatically_initiate=0
+automatically_accept=0
+device=StaticImage: Static picture
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/marie_rc b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/marie_rc
new file mode 100644
index 000000000..9510974c2
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/marie_rc
@@ -0,0 +1,44 @@
+[sip]
+sip_port=5082
+sip_tcp_port=5082
+sip_tls_port=5083
+default_proxy=0
+ping_with_options=0
+register_only_when_network_is_up=0
+
+[auth_info_0]
+username=marie
+userid=marie
+passwd=secret
+realm="sip.example.org"
+
+
+[proxy_0]
+reg_proxy=sip2.linphone.org;transport=tcp
+reg_route=sip2.linphone.org;transport=tcp;lr
+reg_identity=sip:marie@sip.example.org
+reg_expires=3600
+reg_sendregister=1
+publish=0
+dial_escape_plus=0
+
+[friend_0]
+url="Paupoche"
+pol=accept
+subscribe=0
+
+
+[rtp]
+audio_rtp_port=8070
+video_rtp_port=8072
+
+[video]
+display=0
+capture=0
+show_local=0
+size=vga
+enabled=0
+self_view=0
+automatically_initiate=0
+automatically_accept=0
+device=StaticImage: Static picture
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/multi_account_lrc b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/multi_account_lrc
new file mode 100644
index 000000000..4a42f5e6d
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/multi_account_lrc
@@ -0,0 +1,58 @@
+[sip]
+sip_port=5072
+sip_tcp_port=5072
+sip_tls_port=5073
+default_proxy=0
+
+[auth_info_0]
+username=liblinphone_tester
+userid=liblinphone_tester
+passwd=secret
+realm="auth.example.org"
+
+[auth_info_1]
+username=pauline
+userid=pauline
+passwd=secret
+realm="sip.example.org"
+
+[auth_info_2]
+username=liblinphone_tester
+userid=liblinphone_tester
+passwd=secret
+realm="auth1.example.org"
+
+[auth_info_3]
+username=marie
+userid=marie
+passwd=secret
+realm="sip.example.org"
+
+[proxy_0]
+reg_proxy=sip2.linphone.org;transport=tcp
+reg_route=sip2.linphone.org;transport=tcp
+reg_identity=sip:pauline@sip.example.org
+reg_expires=3600
+reg_sendregister=1
+publish=0
+dial_escape_plus=0
+
+[proxy_1]
+reg_proxy=sip2.linphone.org;transport=tcp
+reg_route=sip2.linphone.org;transport=tcp
+reg_identity=sip:marie@sip.example.org
+reg_expires=3600
+reg_sendregister=1
+publish=0
+dial_escape_plus=0
+
+[proxy_2]
+reg_proxy=sip2.linphone.org
+reg_route=sip2.linphone.org
+reg_identity=sip:liblinphone_tester@auth1.example.org
+reg_expires=3600
+reg_sendregister=1
+publish=0
+dial_escape_plus=0
+
+
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/oldphone.wav b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/oldphone.wav
new file mode 100644
index 000000000..e3056cc5d
Binary files /dev/null and b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/oldphone.wav differ
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/pauline_rc b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/pauline_rc
new file mode 100644
index 000000000..af6c66a93
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/pauline_rc
@@ -0,0 +1,43 @@
+[sip]
+sip_port=5072
+sip_tcp_port=5072
+sip_tls_port=5073
+default_proxy=0
+ping_with_options=0
+register_only_when_network_is_up=0
+
+[auth_info_0]
+username=pauline
+userid=pauline
+passwd=secret
+realm="sip.example.org"
+
+
+[proxy_0]
+reg_proxy=sip2.linphone.org;transport=tcp
+reg_route=sip2.linphone.org;transport=tcp;lr
+reg_identity=sip:pauline@sip.example.org
+reg_expires=3600
+reg_sendregister=1
+publish=0
+dial_escape_plus=0
+
+#[friend_0]
+#url="Mariette"
+#pol=accept
+#subscribe=0
+
+[rtp]
+audio_rtp_port=8090
+video_rtp_port=8092
+
+[video]
+display=0
+capture=0
+show_local=0
+size=vga
+enabled=0
+self_view=0
+automatically_initiate=0
+automatically_accept=0
+device=StaticImage: Static picture
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/ringback.wav b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/ringback.wav
new file mode 100644
index 000000000..21f4b5bfb
Binary files /dev/null and b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Assets/ringback.wav differ
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/LibLinphoneTester-wp8.csproj b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/LibLinphoneTester-wp8.csproj
new file mode 100644
index 000000000..c737c799f
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/LibLinphoneTester-wp8.csproj
@@ -0,0 +1,187 @@
+
+
+
+ Debug
+ AnyCPU
+ 10.0.20506
+ 2.0
+ {34D6878F-6CAB-4AE3-9CCC-25E8D6734C90}
+ {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
+ Library
+ Properties
+ LibLinphoneTester_wp8
+ LibLinphoneTester_wp8
+ WindowsPhone
+ v8.0
+ $(TargetFrameworkVersion)
+ true
+
+
+ true
+ true
+ LibLinphoneTester_wp8_$(Configuration)_$(Platform).xap
+ Properties\AppManifest.xml
+ LibLinphoneTester_wp8.App
+ true
+ 11.0
+ true
+
+
+ true
+ full
+ false
+ Bin\Debug
+ DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ Bin\Release
+ TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ true
+ full
+ false
+ Bin\x86\Debug
+ DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ Bin\x86\Release
+ TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ true
+ full
+ false
+ Bin\ARM\Debug
+ DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ Bin\ARM\Release
+ TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+
+ App.xaml
+
+
+
+ MainPage.xaml
+
+
+
+ True
+ True
+ AppResources.resx
+
+
+ TestCasePage.xaml
+
+
+ TestResultPage.xaml
+
+
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+
+
+
+
+
+
+
+
+ Designer
+
+
+
+
+
+ PreserveNewest
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+ PublicResXFileCodeGenerator
+ AppResources.Designer.cs
+
+
+
+
+ {5E94A00B-B14A-4E42-8284-8CB0EF099534}
+ LibLinphoneTester
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/LibLinphoneTester-wp8.csproj.user b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/LibLinphoneTester-wp8.csproj.user
new file mode 100644
index 000000000..96fe30de2
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/LibLinphoneTester-wp8.csproj.user
@@ -0,0 +1,22 @@
+
+
+
+ 256
+ 30F105C9-681E-420b-A277-7C086EAD8A4E
+
+
+ 256
+ 30F105C9-681E-420b-A277-7C086EAD8A4E
+
+
+
+
+
+ False
+ Managed
+ False
+
+
+
+
+
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/LocalizedStrings.cs b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/LocalizedStrings.cs
new file mode 100644
index 000000000..e639982ad
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/LocalizedStrings.cs
@@ -0,0 +1,14 @@
+using LibLinphoneTester_wp8.Resources;
+
+namespace LibLinphoneTester_wp8
+{
+ ///
+ /// Provides access to string resources.
+ ///
+ public class LocalizedStrings
+ {
+ private static AppResources _localizedResources = new AppResources();
+
+ public AppResources LocalizedResources { get { return _localizedResources; } }
+ }
+}
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/MainPage.xaml b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/MainPage.xaml
new file mode 100644
index 000000000..c912857f9
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/MainPage.xaml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/MainPage.xaml.cs b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/MainPage.xaml.cs
new file mode 100644
index 000000000..aa5307968
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/MainPage.xaml.cs
@@ -0,0 +1,58 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+
+namespace LibLinphoneTester_wp8
+{
+ public partial class MainPage : PhoneApplicationPage
+ {
+ public MainPage()
+ {
+ InitializeComponent();
+
+ var tester = (Application.Current as App).tester;
+ List source = new List();
+ source.Add(new UnitTestSuiteName("ALL"));
+ for (int i = 0; i < tester.nbTestSuites(); i++)
+ {
+ source.Add(new UnitTestSuiteName(tester.testSuiteName(i)));
+ }
+
+ Tests.ItemsSource = source;
+ }
+
+ private void Tests_Tap(object sender, System.Windows.Input.GestureEventArgs e)
+ {
+ UnitTestSuiteName test = (sender as LongListSelector).SelectedItem as UnitTestSuiteName;
+ if (test == null) return;
+ if (test.Name == "ALL")
+ {
+ NavigationService.Navigate(new Uri("/TestResultPage.xaml?SuiteName=" + test.Name + "&Verbose=" + Verbose.IsChecked.GetValueOrDefault(), UriKind.Relative));
+ }
+ else
+ {
+ NavigationService.Navigate(new Uri("/TestCasePage.xaml?SuiteName=" + test.Name + "&Verbose=" + Verbose.IsChecked.GetValueOrDefault(), UriKind.Relative));
+ }
+ }
+ }
+
+ public class UnitTestSuiteName
+ {
+ public string Name
+ {
+ get;
+ set;
+ }
+
+ public UnitTestSuiteName(string name)
+ {
+ this.Name = name;
+ }
+ }
+}
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Properties/AppManifest.xml b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Properties/AppManifest.xml
new file mode 100644
index 000000000..a95523275
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Properties/AppManifest.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Properties/AssemblyInfo.cs b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..0b87f1f9b
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Properties/AssemblyInfo.cs
@@ -0,0 +1,37 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Resources;
+
+// 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("LibLinphoneTester_wp8")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("LibLinphoneTester_wp8")]
+[assembly: AssemblyCopyright("Copyright © 2013")]
+[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("f1aad7a9-2083-4726-ab28-f57b1dd5891e")]
+
+// 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 Revision and Build Numbers
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: NeutralResourcesLanguageAttribute("en-US")]
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Properties/WMAppManifest.xml b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Properties/WMAppManifest.xml
new file mode 100644
index 000000000..7ce78feb0
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Properties/WMAppManifest.xml
@@ -0,0 +1,48 @@
+
+
+
+
+ Assets\ApplicationIcon.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Assets\Tiles\FlipCycleTileSmall.png
+ 0
+ Assets\Tiles\FlipCycleTileMedium.png
+ LibLinphoneTester_wp8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Resources/AppResources.Designer.cs b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Resources/AppResources.Designer.cs
new file mode 100644
index 000000000..991c3a23d
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Resources/AppResources.Designer.cs
@@ -0,0 +1,127 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17626
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace LibLinphoneTester_wp8.Resources
+{
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ public class AppResources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal AppResources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if (object.ReferenceEquals(resourceMan, null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LibLinphoneTester_wp8.Resources.AppResources", typeof(AppResources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to LeftToRight.
+ ///
+ public static string ResourceFlowDirection
+ {
+ get
+ {
+ return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to us-EN.
+ ///
+ public static string ResourceLanguage
+ {
+ get
+ {
+ return ResourceManager.GetString("ResourceLanguage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to MY APPLICATION.
+ ///
+ public static string ApplicationTitle
+ {
+ get
+ {
+ return ResourceManager.GetString("ApplicationTitle", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to button.
+ ///
+ public static string AppBarButtonText
+ {
+ get
+ {
+ return ResourceManager.GetString("AppBarButtonText", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to menu item.
+ ///
+ public static string AppBarMenuItemText
+ {
+ get
+ {
+ return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Resources/AppResources.resx b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Resources/AppResources.resx
new file mode 100644
index 000000000..78837dc46
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/Resources/AppResources.resx
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ LeftToRight
+ Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language
+
+
+ en-US
+ Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.
+
+
+ MY APPLICATION
+
+
+ add
+
+
+ Menu Item
+
+
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/TestCasePage.xaml b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/TestCasePage.xaml
new file mode 100644
index 000000000..b6f2ea932
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/TestCasePage.xaml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/TestCasePage.xaml.cs b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/TestCasePage.xaml.cs
new file mode 100644
index 000000000..aae5f878b
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/TestCasePage.xaml.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+
+namespace LibLinphoneTester_wp8
+{
+ public partial class TestCasePage : PhoneApplicationPage
+ {
+ public TestCasePage()
+ {
+ InitializeComponent();
+ }
+
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ base.OnNavigatedTo(e);
+ suiteName = NavigationContext.QueryString["SuiteName"];
+ verbose = Convert.ToBoolean(NavigationContext.QueryString["Verbose"]);
+ var tester = (Application.Current as App).tester;
+ List source = new List();
+ source.Add(new UnitTestCaseName("ALL"));
+ for (int i = 0; i < tester.nbTests(suiteName); i++)
+ {
+ source.Add(new UnitTestCaseName(tester.testName(suiteName, i)));
+ }
+
+ Tests.ItemsSource = source;
+ }
+
+ private void Tests_Tap(object sender, System.Windows.Input.GestureEventArgs e)
+ {
+ UnitTestCaseName test = (sender as LongListSelector).SelectedItem as UnitTestCaseName;
+ if (test == null) return;
+ if (!(Application.Current as App).suiteRunning())
+ {
+ NavigationService.Navigate(new Uri("/TestResultPage.xaml?SuiteName=" + suiteName + "&CaseName=" + test.Name + "&Verbose=" + verbose, UriKind.Relative));
+ }
+ }
+
+ private string suiteName;
+ private bool verbose;
+ }
+
+ public class UnitTestCaseName
+ {
+ public string Name
+ {
+ get;
+ set;
+ }
+
+ public UnitTestCaseName(string name)
+ {
+ this.Name = name;
+ }
+ }
+}
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/TestResultPage.xaml b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/TestResultPage.xaml
new file mode 100644
index 000000000..97afd9af6
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/TestResultPage.xaml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/TestResultPage.xaml.cs b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/TestResultPage.xaml.cs
new file mode 100644
index 000000000..2ad80deb3
--- /dev/null
+++ b/build/vsx/LibLinphoneTester-wp8/LibLinphoneTester-wp8/TestResultPage.xaml.cs
@@ -0,0 +1,98 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using System.Threading.Tasks;
+using linphone_tester_native;
+
+namespace LibLinphoneTester_wp8
+{
+ public delegate void OutputDisplayDelegate(String msg);
+
+ public partial class TestResultPage : PhoneApplicationPage
+ {
+ public TestResultPage()
+ {
+ InitializeComponent();
+ }
+
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ base.OnNavigatedTo(e);
+ string suiteName = NavigationContext.QueryString["SuiteName"];
+ string caseName;
+ if (NavigationContext.QueryString.ContainsKey("CaseName"))
+ {
+ caseName = NavigationContext.QueryString["CaseName"];
+ }
+ else
+ {
+ caseName = "ALL";
+ }
+ bool verbose = Convert.ToBoolean(NavigationContext.QueryString["Verbose"]);
+ var app = (Application.Current as App);
+ app.suite = new UnitTestSuite(suiteName, caseName, verbose, new OutputDisplayDelegate(OutputDisplay));
+ app.suite.run();
+ }
+
+ public void OutputDisplay(String msg)
+ {
+ this.Dispatcher.BeginInvoke(() =>
+ {
+ TestResults.Text += msg;
+ });
+ }
+ }
+
+ public class UnitTestSuite : OutputTraceListener
+ {
+ public UnitTestSuite(string SuiteName, string CaseName, bool Verbose, OutputDisplayDelegate OutputDisplay)
+ {
+ this.SuiteName = SuiteName;
+ this.CaseName = CaseName;
+ this.Verbose = Verbose;
+ this.Running = false;
+ this.OutputDisplay = OutputDisplay;
+ }
+
+ async public void run()
+ {
+ Running = true;
+ var tup = new Tuple(SuiteName, CaseName, Verbose);
+ var t = Task.Factory.StartNew((object parameters) =>
+ {
+ var tester = (Application.Current as App).tester;
+ tester.setOutputTraceListener(this);
+ var p = parameters as Tuple;
+ tester.run(p.Item1, p.Item2, p.Item3);
+ }, tup);
+ await t;
+ Running = false;
+ }
+
+ public void outputTrace(String msg)
+ {
+ if (OutputDisplay != null)
+ {
+ OutputDisplay(msg);
+ }
+ System.Diagnostics.Debug.WriteLine(msg);
+ }
+
+ public bool running {
+ get { return Running; }
+ protected set { Running = value; }
+ }
+
+ private string SuiteName;
+ private string CaseName;
+ private bool Verbose;
+ private bool Running;
+ private OutputDisplayDelegate OutputDisplay;
+ }
+}
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester/LibLinphoneTester.vcxproj b/build/vsx/LibLinphoneTester/LibLinphoneTester.vcxproj
index bf77462b5..cd448cb77 100644
--- a/build/vsx/LibLinphoneTester/LibLinphoneTester.vcxproj
+++ b/build/vsx/LibLinphoneTester/LibLinphoneTester.vcxproj
@@ -20,28 +20,29 @@
{5e94a00b-b14a-4e42-8284-8cb0ef099534}
- LibLinphoneTester
+ linphone_tester_native
en-US
11.0
+ true
DynamicLibrary
true
- v110
+ v110_wp80
false
DynamicLibrary
true
v110_wp80
- false
+ true
DynamicLibrary
false
true
- v110
+ v110_wp80
false
@@ -84,24 +85,25 @@
Console
false
false
- true
+ false
+ Level4
WIN32;_DEBUG;_WINDOWS;_WINRT_DLL;_CRT_SECURE_NO_WARNINGS;HAVE_CU_GET_SUITE;IN_LINPHONE;%(PreprocessorDefinitions)
+ $(ProjectDir)..\..\..\..\belle-sip\include;$(ProjectDir)..\..\..\..\oRTP\include;$(ProjectDir)..\..\..\..\mediastreamer2\include;$(ProjectDir)..\..\..\tester;$(ProjectDir)..\..\..\coreapi;$(ProjectDir)..\..\..\include;$(ProjectDir)..\..\..\..\cunit\build\windows\cunit\$(Platform)\$(Configuration);%(AdditionalIncludeDirectories)
+ Default
NotUsing
- false
$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)
- $(ProjectDir)..\..\..\..\belle-sip\include;$(ProjectDir)..\..\..\..\oRTP\include;$(ProjectDir)..\..\..\..\mediastreamer2\include;$(ProjectDIr)..\..\..\..\tunnel\include;$(ProjectDir)..\..\..\coreapi;$(ProjectDir)..\..\..\include;$(ProjectDir)..\..\..\..\cunit\build\windows\cunit\$(Platform)\$(Configuration);%(AdditionalIncludeDirectories)
+ false
Console
false
- false
- true
- ws2_32.lib;%(AdditionalDependencies)
ole32.lib;%(IgnoreSpecificDefaultLibraries)
+ true
+ WindowsPhoneCore.lib;RuntimeObject.lib;PhoneAppModelHost.lib;ws2_32.lib;%(AdditionalDependencies)
$(SolutionDir)$(Platform)\$(Configuration)
@@ -116,13 +118,10 @@
Console
false
false
- true
+ false
-
- true
-
true
false
@@ -135,9 +134,13 @@
+
+ true
+
+
@@ -153,13 +156,8 @@
{08dd0d38-d9b5-4626-b60d-b4d76b571142}
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester/LibLinphoneTester.vcxproj.filters b/build/vsx/LibLinphoneTester/LibLinphoneTester.vcxproj.filters
index e7b5435bd..e86d31aa1 100644
--- a/build/vsx/LibLinphoneTester/LibLinphoneTester.vcxproj.filters
+++ b/build/vsx/LibLinphoneTester/LibLinphoneTester.vcxproj.filters
@@ -13,19 +13,10 @@
+
-
-
-
- Resource Files
-
-
- Resource Files
-
-
- Resource Files
-
+
\ No newline at end of file
diff --git a/build/vsx/LibLinphoneTester/linphone-tester-native.cpp b/build/vsx/LibLinphoneTester/linphone-tester-native.cpp
new file mode 100644
index 000000000..7d83518b3
--- /dev/null
+++ b/build/vsx/LibLinphoneTester/linphone-tester-native.cpp
@@ -0,0 +1,102 @@
+#include
+
+#include "linphone-tester-native.h"
+#include "ortp/logging.h"
+#include "cunit/Util.h"
+
+
+using namespace linphone_tester_native;
+using namespace Platform;
+
+#define MAX_TRACE_SIZE 512
+#define MAX_SUITE_NAME_SIZE 128
+
+static OutputTraceListener^ sTraceListener;
+
+static void nativeOutputTraceHandler(int lev, const char *fmt, va_list args)
+{
+ if (sTraceListener) {
+ wchar_t wstr[MAX_TRACE_SIZE];
+ std::string str;
+ str.resize(MAX_TRACE_SIZE);
+ vsnprintf((char *)str.c_str(), MAX_TRACE_SIZE, fmt, args);
+ mbstowcs(wstr, str.c_str(), sizeof(wstr));
+ String^ msg = ref new String(wstr);
+ sTraceListener->outputTrace(msg);
+ }
+}
+
+static void LinphoneNativeOutputTraceHandler(OrtpLogLevel lev, const char *fmt, va_list args)
+{
+ char fmt2[MAX_TRACE_SIZE];
+ snprintf(fmt2, MAX_TRACE_SIZE, "%s\n", fmt);
+ nativeOutputTraceHandler((int)lev, fmt2, args);
+}
+
+LinphoneTesterNative::LinphoneTesterNative()
+{
+ liblinphone_tester_init();
+}
+
+LinphoneTesterNative::~LinphoneTesterNative()
+{
+ liblinphone_tester_uninit();
+}
+
+void LinphoneTesterNative::setOutputTraceListener(OutputTraceListener^ traceListener)
+{
+ sTraceListener = traceListener;
+}
+
+void LinphoneTesterNative::run(Platform::String^ suiteName, Platform::String^ caseName, Platform::Boolean verbose)
+{
+ std::wstring all(L"ALL");
+ std::wstring wssuitename = suiteName->Data();
+ std::wstring wscasename = caseName->Data();
+ char csuitename[MAX_SUITE_NAME_SIZE] = { 0 };
+ char ccasename[MAX_SUITE_NAME_SIZE] = { 0 };
+ wcstombs(csuitename, wssuitename.c_str(), sizeof(csuitename));
+ wcstombs(ccasename, wscasename.c_str(), sizeof(ccasename));
+
+ if (verbose) {
+ ortp_set_log_level_mask(ORTP_MESSAGE|ORTP_WARNING|ORTP_ERROR|ORTP_FATAL);
+ } else {
+ ortp_set_log_level_mask(ORTP_ERROR|ORTP_FATAL);
+ }
+ ortp_set_log_handler(LinphoneNativeOutputTraceHandler);
+ CU_set_trace_handler(nativeOutputTraceHandler);
+
+ liblinphone_tester_run_tests(wssuitename == all ? 0 : csuitename, wscasename == all ? 0 : ccasename);
+}
+
+unsigned int LinphoneTesterNative::nbTestSuites()
+{
+ return liblinphone_tester_nb_test_suites();
+}
+
+unsigned int LinphoneTesterNative::nbTests(Platform::String^ suiteName)
+{
+ std::wstring suitename = suiteName->Data();
+ char cname[MAX_SUITE_NAME_SIZE] = { 0 };
+ wcstombs(cname, suitename.c_str(), sizeof(cname));
+ return liblinphone_tester_nb_tests(cname);
+}
+
+Platform::String^ LinphoneTesterNative::testSuiteName(int index)
+{
+ const char *cname = liblinphone_tester_test_suite_name(index);
+ wchar_t wcname[MAX_SUITE_NAME_SIZE];
+ mbstowcs(wcname, cname, sizeof(wcname));
+ return ref new String(wcname);
+}
+
+Platform::String^ LinphoneTesterNative::testName(Platform::String^ suiteName, int testIndex)
+{
+ std::wstring suitename = suiteName->Data();
+ char csuitename[MAX_SUITE_NAME_SIZE] = { 0 };
+ wcstombs(csuitename, suitename.c_str(), sizeof(csuitename));
+ const char *cname = liblinphone_tester_test_name(csuitename, testIndex);
+ wchar_t wcname[MAX_SUITE_NAME_SIZE];
+ mbstowcs(wcname, cname, sizeof(wcname));
+ return ref new String(wcname);
+}
diff --git a/build/vsx/LibLinphoneTester/linphone-tester-native.h b/build/vsx/LibLinphoneTester/linphone-tester-native.h
new file mode 100644
index 000000000..b0adb2cc2
--- /dev/null
+++ b/build/vsx/LibLinphoneTester/linphone-tester-native.h
@@ -0,0 +1,25 @@
+#pragma once
+
+#include "liblinphone_tester.h"
+
+namespace linphone_tester_native
+{
+ public interface class OutputTraceListener
+ {
+ public:
+ void outputTrace(Platform::String^ msg);
+ };
+
+ public ref class LinphoneTesterNative sealed
+ {
+ public:
+ LinphoneTesterNative();
+ virtual ~LinphoneTesterNative();
+ void setOutputTraceListener(OutputTraceListener^ traceListener);
+ unsigned int nbTestSuites();
+ unsigned int nbTests(Platform::String^ suiteName);
+ Platform::String^ testSuiteName(int index);
+ Platform::String^ testName(Platform::String^ suiteName, int testIndex);
+ void run(Platform::String^ suiteName, Platform::String^ caseName, Platform::Boolean verbose);
+ };
+}
\ No newline at end of file
diff --git a/tester/call_tester.c b/tester/call_tester.c
index 0715fad79..4401406c2 100644
--- a/tester/call_tester.c
+++ b/tester/call_tester.c
@@ -141,8 +141,8 @@ static bool_t call(LinphoneCoreManager* caller_mgr,LinphoneCoreManager* callee_m
}
static void simple_call(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
LinphoneCore* lc_marie=marie->lc;
LinphoneCore* lc_pauline=pauline->lc;
@@ -182,8 +182,8 @@ static void simple_call(void) {
}
static void cancelled_call(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
LinphoneCall* out_call = linphone_core_invite(pauline->lc,"marie");
linphone_call_ref(out_call);
@@ -200,7 +200,7 @@ static void cancelled_call(void) {
}
static void call_with_dns_time_out(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new(NULL);
+ LinphoneCoreManager* marie = linphone_core_manager_new(NULL, NULL);
LCSipTransports transport = {9773,0,0,0};
linphone_core_set_sip_transports(marie->lc,&transport);
linphone_core_iterate(marie->lc);
@@ -215,8 +215,8 @@ static void call_with_dns_time_out(void) {
}
static void cancelled_ringing_call(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
LinphoneCall* out_call = linphone_core_invite(pauline->lc,"marie");
linphone_call_ref(out_call);
@@ -233,8 +233,9 @@ static void cancelled_ringing_call(void) {
}
static void early_declined_call(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
+
LinphoneCall* in_call;
LinphoneCall* out_call = linphone_core_invite(pauline->lc,"marie");
linphone_call_ref(out_call);
@@ -254,8 +255,8 @@ static void early_declined_call(void) {
}
static void call_terminated_by_caller(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
CU_ASSERT_TRUE(call(pauline,marie));
/*just to sleep*/
@@ -268,8 +269,8 @@ static void call_terminated_by_caller(void) {
}
static void call_paused_resumed(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
LinphoneCall* call_obj;
CU_ASSERT_TRUE(call(pauline,marie));
@@ -306,8 +307,8 @@ static bool_t pause_call_1(LinphoneCoreManager* mgr_1,LinphoneCall* call_1,Linph
}
static void call_paused_resumed_from_callee(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
LinphoneCall* call_obj;
CU_ASSERT_TRUE(call(pauline,marie));
@@ -332,8 +333,8 @@ static void call_paused_resumed_from_callee(void) {
}
static void call_with_video_added(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
LinphoneCall* call_obj;
LinphoneVideoPolicy pauline_policy;
LinphoneCallParams* marie_params;
@@ -375,12 +376,12 @@ static void call_with_video_added(void) {
}
static void simple_conference(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
+ LinphoneCoreManager* laure = linphone_core_manager_new(FILE_PREFIX, "laure_rc");
stats initial_marie_stat;
stats initial_pauline_stat;
stats initial_laure_stat;
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
- LinphoneCoreManager* laure = linphone_core_manager_new("./tester/laure_rc");
LinphoneCall* marie_call_pauline;
LinphoneCall* pauline_called_by_marie;
@@ -432,8 +433,8 @@ static void simple_conference(void) {
}
static void srtp_call(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
linphone_core_set_media_encryption(marie->lc,LinphoneMediaEncryptionSRTP);
linphone_core_set_media_encryption(pauline->lc,LinphoneMediaEncryptionSRTP);
@@ -453,9 +454,8 @@ static void srtp_call(void) {
}
static void early_media_call(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_early_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
-
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_early_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
CU_ASSERT_TRUE(call(pauline,marie));
@@ -471,9 +471,9 @@ static void early_media_call(void) {
}
static void simple_call_transfer(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
- LinphoneCoreManager* laure = linphone_core_manager_new("./tester/laure_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
+ LinphoneCoreManager* laure = linphone_core_manager_new(FILE_PREFIX, "laure_rc");
LinphoneCall* pauline_called_by_marie;
char* laure_identity=linphone_address_as_string(laure->identity);
@@ -520,9 +520,9 @@ static void simple_call_transfer(void) {
}
static void call_transfer_existing_call_outgoing_call(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
- LinphoneCoreManager* laure = linphone_core_manager_new("./tester/laure_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
+ LinphoneCoreManager* laure = linphone_core_manager_new(FILE_PREFIX, "laure_rc");
LinphoneCall* marie_call_pauline;
LinphoneCall* pauline_called_by_marie;
diff --git a/tester/liblinphone_tester.c b/tester/liblinphone_tester.c
index e92037e17..31b64fe2e 100644
--- a/tester/liblinphone_tester.c
+++ b/tester/liblinphone_tester.c
@@ -36,6 +36,7 @@ const char* test_domain="sipopen.example.org";
const char* auth_domain="sip.example.org";
const char* test_username="liblinphone_tester";
const char* test_password="secret";
+const char* test_route="sip2.linphone.org";
LinphoneAddress * create_linphone_address(const char * domain) {
@@ -43,7 +44,7 @@ LinphoneAddress * create_linphone_address(const char * domain) {
CU_ASSERT_PTR_NOT_NULL_FATAL(addr);
linphone_address_set_username(addr,test_username);
CU_ASSERT_STRING_EQUAL(test_username,linphone_address_get_username(addr));
- if (!domain) domain= test_domain;
+ if (!domain) domain= test_route;
linphone_address_set_domain(addr,domain);
CU_ASSERT_STRING_EQUAL(domain,linphone_address_get_domain(addr));
linphone_address_set_display_name(addr, NULL);
@@ -82,15 +83,22 @@ void reset_counters( stats* counters) {
memset(counters,0,sizeof(stats));
}
-LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* file,int proxy_count) {
+LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* path, const char* file, int proxy_count) {
LinphoneCore* lc;
int retry=0;
stats* counters;
- lc = linphone_core_new(v_table,NULL,file,NULL);
+ char filepath[50];
+ char ringpath[50];
+ char ringbackpath[50];
+ sprintf(filepath, "%s/%s", path, file);
+ lc = linphone_core_new(v_table,NULL,filepath,NULL);
linphone_core_set_user_data(lc,&global_stat);
counters = (stats*)linphone_core_get_user_data(lc);
- linphone_core_set_ring(lc,"./share/rings/oldphone.wav");
- linphone_core_set_ringback(lc,"./share/ringback.wav");
+
+ sprintf(ringpath, "%s/%s", path, "oldphone.wav");
+ sprintf(ringbackpath, "%s/%s", path, "ringback.wav");
+ linphone_core_set_ring(lc, ringpath);
+ linphone_core_set_ringback(lc, ringbackpath);
reset_counters(counters);
CU_ASSERT_EQUAL(ms_list_size(linphone_core_get_proxy_config_list(lc)),proxy_count);
@@ -140,7 +148,7 @@ static void enable_codec(LinphoneCore* lc,const char* type,int rate) {
}
}
-LinphoneCoreManager* linphone_core_manager_new(const char* rc_file) {
+LinphoneCoreManager* linphone_core_manager_new(const char* path, const char* rc_file) {
LinphoneCoreManager* mgr= malloc(sizeof(LinphoneCoreManager));
LinphoneProxyConfig* proxy;
memset (mgr,0,sizeof(LinphoneCoreManager));
@@ -151,7 +159,7 @@ LinphoneCoreManager* linphone_core_manager_new(const char* rc_file) {
mgr->v_table.new_subscription_request=new_subscribtion_request;
mgr->v_table.notify_presence_recv=notify_presence_received;
mgr->v_table.transfer_state_changed=linphone_transfer_state_changed;
- mgr->lc=configure_lc_from(&mgr->v_table,rc_file,rc_file?1:0);
+ mgr->lc=configure_lc_from(&mgr->v_table, path, rc_file, rc_file?1:0);
enable_codec(mgr->lc,"PCMU",8000);
linphone_core_set_user_data(mgr->lc,&mgr->stat);
linphone_core_get_default_proxy(mgr->lc,&proxy);
diff --git a/tester/liblinphone_tester.h b/tester/liblinphone_tester.h
index 1d17dbffc..c7e84b480 100644
--- a/tester/liblinphone_tester.h
+++ b/tester/liblinphone_tester.h
@@ -22,7 +22,7 @@
#include "CUnit/Basic.h"
-
+#include "linphonecore.h"
typedef void (*test_function_t)(void);
typedef int (*test_suite_function_t)(const char *name);
@@ -40,6 +40,11 @@ typedef struct {
test_t *tests;
} test_suite_t;
+#if WINAPI_FAMILY_PHONE_APP
+#define FILE_PREFIX "Assets"
+#else
+#define FILE_PREFIX "./tester"
+#endif
#ifdef __cplusplus
extern "C" {
@@ -70,7 +75,7 @@ const char* test_domain;
const char* auth_domain;
const char* test_username;
const char* test_password;
-
+const char* test_route;
typedef struct _stats {
@@ -131,7 +136,7 @@ typedef struct _LinphoneCoreManager {
} LinphoneCoreManager;
-LinphoneCoreManager* linphone_core_manager_new(const char* rc_file);
+LinphoneCoreManager* linphone_core_manager_new(const char * path, const char* rc_file);
void linphone_core_manager_destroy(LinphoneCoreManager* mgr);
void reset_counters( stats* counters);
@@ -147,7 +152,7 @@ void auth_info_requested(LinphoneCore *lc, const char *realm, const char *userna
LinphoneCore* create_lc_with_auth(unsigned int with_auth) ;
LinphoneAddress * create_linphone_address(const char * domain);
-LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* file,int proxy_count);
+LinphoneCore* configure_lc_from(LinphoneCoreVTable* v_table, const char* path, const char* file, int proxy_count);
bool_t wait_for(LinphoneCore* lc_1, LinphoneCore* lc_2,int* counter,int value);
bool_t wait_for_list(MSList* lcs,int* counter,int value,int timeout_ms);
diff --git a/tester/message_tester.c b/tester/message_tester.c
index d1d4382b5..6dd2325d2 100644
--- a/tester/message_tester.c
+++ b/tester/message_tester.c
@@ -62,8 +62,8 @@ void linphone_chat_message_state_change(LinphoneChatMessage* msg,LinphoneChatMes
}
static void text_message(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
char* to = linphone_address_as_string(marie->identity);
LinphoneChatRoom* chat_room = linphone_core_create_chat_room(pauline->lc,to);
linphone_chat_room_send_message(chat_room,"Bla bla bla bla");
@@ -74,8 +74,8 @@ static void text_message(void) {
}
static void text_message_with_ack(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
char* to = linphone_address_as_string(marie->identity);
LinphoneChatRoom* chat_room = linphone_core_create_chat_room(pauline->lc,to);
LinphoneChatMessage* message = linphone_chat_room_create_message(chat_room,"Bli bli bli \n blu");
@@ -88,8 +88,8 @@ static void text_message_with_ack(void) {
}
static void text_message_with_external_body(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
char* to = linphone_address_as_string(marie->identity);
LinphoneChatRoom* chat_room = linphone_core_create_chat_room(pauline->lc,to);
LinphoneChatMessage* message = linphone_chat_room_create_message(chat_room,"Bli bli bli \n blu");
@@ -105,8 +105,8 @@ static void text_message_with_external_body(void) {
}
static void text_message_with_send_error(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
char* to = linphone_address_as_string(pauline->identity);
LinphoneChatRoom* chat_room = linphone_core_create_chat_room(marie->lc,to);
LinphoneChatMessage* message = linphone_chat_room_create_message(chat_room,"Bli bli bli \n blu");
diff --git a/tester/presence_tester.c b/tester/presence_tester.c
index 6701e82d9..076f6c040 100644
--- a/tester/presence_tester.c
+++ b/tester/presence_tester.c
@@ -43,7 +43,7 @@ void notify_presence_received(LinphoneCore *lc, LinphoneFriend * lf) {
}
static void simple_publish(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
LinphoneProxyConfig* proxy;
linphone_core_get_default_proxy(marie->lc,&proxy);
linphone_proxy_config_edit(proxy);
@@ -54,8 +54,8 @@ static void simple_publish(void) {
}
static void simple_subscribe(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
- LinphoneCoreManager* pauline = linphone_core_manager_new("./tester/pauline_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
+ LinphoneCoreManager* pauline = linphone_core_manager_new(FILE_PREFIX, "pauline_rc");
const MSList* marie_friends = linphone_core_get_friend_list(marie->lc);
LinphoneFriend* friend;
CU_ASSERT_PTR_NOT_NULL_FATAL(marie_friends);
@@ -74,7 +74,7 @@ static void simple_subscribe(void) {
}
static void unsubscribe_while_subscribing(void) {
- LinphoneCoreManager* marie = linphone_core_manager_new("./tester/marie_rc");
+ LinphoneCoreManager* marie = linphone_core_manager_new(FILE_PREFIX, "marie_rc");
LinphoneFriend* friend = linphone_friend_new_with_addr("sip:toto@git.linphone.org"); /*any unexisting address*/
linphone_friend_edit(friend);
linphone_friend_enable_subscribes(friend,TRUE);
diff --git a/tester/register_tester.c b/tester/register_tester.c
index d318356b6..149b21a45 100644
--- a/tester/register_tester.c
+++ b/tester/register_tester.c
@@ -118,9 +118,11 @@ static void register_with_refresh_with_send_error(void) {
LinphoneCore* lc = create_lc_with_auth(1);
stats* counters = (stats*)linphone_core_get_user_data(lc);
LinphoneAuthInfo *info=linphone_auth_info_new(test_username,NULL,test_password,NULL,auth_domain); /*create authentication structure from identity*/
+ char route[256];
+ sprintf(route,"sip:%s",test_route);
linphone_core_add_auth_info(lc,info); /*add authentication info to LinphoneCore*/
- register_with_refresh_base(lc,TRUE,auth_domain,NULL);
+ register_with_refresh_base(lc,TRUE,auth_domain,route);
/*simultate a network error*/
sal_set_send_error(lc->sal, -1);
while (counters->number_of_LinphoneRegistrationFailed<1 && retry++ <20) {
@@ -152,33 +154,37 @@ static void simple_register_with_refresh() {
static void simple_auth_register_with_refresh() {
LinphoneCore* lc = create_lc_with_auth(1);
stats* counters = (stats*)linphone_core_get_user_data(lc);
- register_with_refresh(lc,TRUE,auth_domain,NULL);
+ char route[256];
+ sprintf(route,"sip:%s",test_route);
+ register_with_refresh(lc,TRUE,auth_domain,route);
CU_ASSERT_EQUAL(counters->number_of_auth_info_requested,1);
}
static void simple_tcp_register(){
char route[256];
LinphoneCore* lc;
- sprintf(route,"sip:%s;transport=tcp",test_domain);
+ sprintf(route,"sip:%s;transport=tcp",test_route);
lc = create_lc();
- register_with_refresh(lc,FALSE,NULL,route);
+ register_with_refresh(lc,FALSE,test_domain,route);
}
static void simple_tls_register(){
char route[256];
LinphoneCore* lc;
- sprintf(route,"sip:%s;transport=tls",test_domain);
+ sprintf(route,"sip:%s;transport=tls",test_route);
lc = create_lc();
- register_with_refresh(lc,FALSE,NULL,route);
+ register_with_refresh(lc,FALSE,test_domain,route);
}
static void simple_authenticated_register(){
stats* counters;
LinphoneCore* lc = create_lc();
LinphoneAuthInfo *info=linphone_auth_info_new(test_username,NULL,test_password,NULL,auth_domain); /*create authentication structure from identity*/
+ char route[256];
+ sprintf(route,"sip:%s",test_route);
linphone_core_add_auth_info(lc,info); /*add authentication info to LinphoneCore*/
counters = (stats*)linphone_core_get_user_data(lc);
- register_with_refresh(lc,FALSE,auth_domain,NULL);
+ register_with_refresh(lc,FALSE,auth_domain,route);
CU_ASSERT_EQUAL(counters->number_of_auth_info_requested,0);
}
@@ -187,6 +193,8 @@ static void authenticated_register_with_no_initial_credentials(){
LinphoneCore* lc;
stats stat;
stats* counters;
+ char route[256];
+ sprintf(route,"sip:%s",test_route);
memset (&v_table,0,sizeof(v_table));
v_table.registration_state_changed=registration_state_changed;
v_table.auth_info_requested=auth_info_requested;
@@ -194,7 +202,7 @@ static void authenticated_register_with_no_initial_credentials(){
linphone_core_set_user_data(lc,&stat);
counters= (stats*)linphone_core_get_user_data(lc);
counters->number_of_auth_info_requested=0;
- register_with_refresh(lc,FALSE,auth_domain,NULL);
+ register_with_refresh(lc,FALSE,auth_domain,route);
CU_ASSERT_EQUAL(counters->number_of_auth_info_requested,1);
}
@@ -212,19 +220,21 @@ static void authenticated_register_with_late_credentials(){
LinphoneCore* lc;
stats stat;
stats* counters;
+ char route[256];
+ sprintf(route,"sip:%s",test_route);
memset (&v_table,0,sizeof(v_table));
v_table.registration_state_changed=registration_state_changed;
v_table.auth_info_requested=auth_info_requested2;
lc = linphone_core_new(&v_table,NULL,NULL,NULL);
linphone_core_set_user_data(lc,&stat);
counters = (stats*)linphone_core_get_user_data(lc);
- register_with_refresh_base_2(lc,FALSE,auth_domain,NULL,TRUE);
+ register_with_refresh_base_2(lc,FALSE,auth_domain,route,TRUE);
CU_ASSERT_EQUAL(counters->number_of_auth_info_requested,1);
linphone_core_destroy(lc);
}
static LinphoneCore* configure_lc(LinphoneCoreVTable* v_table) {
- return configure_lc_from(v_table,"./tester/multi_account_lrc",3);
+ return configure_lc_from(v_table, FILE_PREFIX, "multi_account_lrc", 3);
}
static void multiple_proxy(){