diff options
author | Mamadou DIOP <bossiel@yahoo.fr> | 2015-08-17 01:56:35 +0200 |
---|---|---|
committer | Mamadou DIOP <bossiel@yahoo.fr> | 2015-08-17 01:56:35 +0200 |
commit | 631fffee8a28b1bec5ed1f1d26a20e0135967f99 (patch) | |
tree | 74afe3bf3efe15aa82bcd0272b2b0f4d48c2d837 /bindings/winrt | |
parent | 7908865936604036e6f200f1b5e069f8752f3a3a (diff) | |
download | doubango-631fffee8a28b1bec5ed1f1d26a20e0135967f99.zip doubango-631fffee8a28b1bec5ed1f1d26a20e0135967f99.tar.gz |
-
Diffstat (limited to 'bindings/winrt')
37 files changed, 5397 insertions, 0 deletions
diff --git a/bindings/winrt/HandleRef.cs b/bindings/winrt/HandleRef.cs new file mode 100644 index 0000000..649f125 --- /dev/null +++ b/bindings/winrt/HandleRef.cs @@ -0,0 +1,55 @@ +// ==++== +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// ==--== +namespace System.Runtime.InteropServices +{ + + using System; + + [System.Runtime.InteropServices.ComVisible(true)] + public struct HandleRef + { + + // ! Do not add or rearrange fields as the EE depends on this layout. + //------------------------------------------------------------------ + internal Object m_wrapper; + internal IntPtr m_handle; + //----------------------------------------------------------------- + + + public HandleRef(Object wrapper, IntPtr handle) + { + m_wrapper = wrapper; + m_handle = handle; + } + + public Object Wrapper + { + get + { + return m_wrapper; + } + } + + public IntPtr Handle + { + get + { + return m_handle; + } + } + + + public static explicit operator IntPtr(HandleRef value) + { + return value.m_handle; + } + + public static IntPtr ToIntPtr(HandleRef value) + { + return value.m_handle; + } + } +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/doubango_rt.vcxproj b/bindings/winrt/doubango_rt/doubango_rt.vcxproj new file mode 100644 index 0000000..41b23c5 --- /dev/null +++ b/bindings/winrt/doubango_rt/doubango_rt.vcxproj @@ -0,0 +1,232 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|ARM"> + <Configuration>Debug</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|ARM"> + <Configuration>Release</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{9ef0fc75-baab-4f71-ac0c-dbd185463ff8}</ProjectGuid> + <RootNamespace>doubango_rt</RootNamespace> + <DefaultLanguage>en-US</DefaultLanguage> + <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> + <WinMDAssembly>true</WinMDAssembly> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110_wp80</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110_wp80</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110_wp80</PlatformToolset> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110_wp80</PlatformToolset> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <GenerateManifest>false</GenerateManifest> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <OutDir>$(SolutionDir)$(Configuration)\$(MSBuildProjectName)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <OutDir>$(SolutionDir)$(Configuration)\$(MSBuildProjectName)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <IntDir>$(Platform)\$(Configuration)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <IntDir>$(Platform)\$(Configuration)\</IntDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PreprocessorDefinitions>_WINRT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <PrecompiledHeaderFile> + </PrecompiledHeaderFile> + <AdditionalUsingDirectories>$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <CompileAsWinRT>true</CompileAsWinRT> + <AdditionalIncludeDirectories>include;..\..\_common;..\..\.;..\..\..\thirdparties\winrt\include;..\..\..\tinySAK\src;..\..\..\tinyNET\src;..\..\..\tinyHTTP\include;..\..\..\tinySIP\include;..\..\..\tinyDAV\include;..\..\..\tinySDP\include;..\..\..\tinyMEDIA\include;..\..\..\tinyXCAP\include;..\..\..\tinySMS\include;..\..\..\tinyMSRP\include</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <IgnoreSpecificDefaultLibraries>ole32.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> + <GenerateWindowsMetadata>true</GenerateWindowsMetadata> + <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>_WINRT_DLL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <PrecompiledHeaderFile> + </PrecompiledHeaderFile> + <AdditionalUsingDirectories>$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <CompileAsWinRT>true</CompileAsWinRT> + <AdditionalIncludeDirectories>include;..\..\_common;..\..\.;..\..\..\thirdparties\winrt\include;..\..\..\tinySAK\src;..\..\..\tinyNET\src;..\..\..\tinyHTTP\include;..\..\..\tinySIP\include;..\..\..\tinyDAV\include;..\..\..\tinySDP\include;..\..\..\tinyMEDIA\include;..\..\..\tinyXCAP\include;..\..\..\tinySMS\include;..\..\..\tinyMSRP\include</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <IgnoreSpecificDefaultLibraries>ole32.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> + <GenerateWindowsMetadata>true</GenerateWindowsMetadata> + <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <ClCompile> + <PreprocessorDefinitions>_WINRT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <PrecompiledHeaderFile> + </PrecompiledHeaderFile> + <AdditionalUsingDirectories>$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <CompileAsWinRT>true</CompileAsWinRT> + <AdditionalIncludeDirectories>include;..\..\_common;..\..\.;..\..\..\thirdparties\winrt\include;..\..\..\tinySAK\src;..\..\..\tinyNET\src;..\..\..\tinyHTTP\include;..\..\..\tinySIP\include;..\..\..\tinyDAV\include;..\..\..\tinySDP\include;..\..\..\tinyMEDIA\include;..\..\..\tinyXCAP\include;..\..\..\tinySMS\include;..\..\..\tinyMSRP\include</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <IgnoreSpecificDefaultLibraries>ole32.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> + <GenerateWindowsMetadata>true</GenerateWindowsMetadata> + <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <ClCompile> + <PreprocessorDefinitions>_WINRT_DLL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <PrecompiledHeaderFile> + </PrecompiledHeaderFile> + <AdditionalUsingDirectories>$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <CompileAsWinRT>true</CompileAsWinRT> + <AdditionalIncludeDirectories>include;..\..\_common;..\..\.;..\..\..\thirdparties\winrt\include;..\..\..\tinySAK\src;..\..\..\tinyNET\src;..\..\..\tinyHTTP\include;..\..\..\tinySIP\include;..\..\..\tinyDAV\include;..\..\..\tinySDP\include;..\..\..\tinyMEDIA\include;..\..\..\tinyXCAP\include;..\..\..\tinySMS\include;..\..\..\tinyMSRP\include</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <IgnoreSpecificDefaultLibraries>ole32.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries> + <GenerateWindowsMetadata>true</GenerateWindowsMetadata> + <AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <Reference Include="platform.winmd"> + <IsWinMDFile>true</IsWinMDFile> + <Private>false</Private> + </Reference> + </ItemGroup> + <ItemGroup> + <ClInclude Include="include\rt_ActionConfig.h" /> + <ClInclude Include="include\rt_Config.h" /> + <ClInclude Include="include\rt_DDebug.h" /> + <ClInclude Include="include\rt_Enums.h" /> + <ClInclude Include="include\rt_MediaContent.h" /> + <ClInclude Include="include\rt_MediaSessionMgr.h" /> + <ClInclude Include="include\rt_Msrp.h" /> + <ClInclude Include="include\rt_SipCallback.h" /> + <ClInclude Include="include\rt_SipEvent.h" /> + <ClInclude Include="include\rt_SipMessage.h" /> + <ClInclude Include="include\rt_SipSession.h" /> + <ClInclude Include="include\rt_SipStack.h" /> + <ClInclude Include="include\rt_SipUri.h" /> + <ClInclude Include="include\rt_SMSEncoder.h" /> + <ClInclude Include="include\rt_String.h" /> + <ClInclude Include="include\rt_Xcap.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="src\rt_ActionConfig.cxx" /> + <ClCompile Include="src\rt_DDebug.cxx" /> + <ClCompile Include="src\rt_Enums.cxx" /> + <ClCompile Include="src\rt_MediaContent.cxx" /> + <ClCompile Include="src\rt_MediaSessionMgr.cxx" /> + <ClCompile Include="src\rt_Msrp.cxx" /> + <ClCompile Include="src\rt_SipCallback.cxx" /> + <ClCompile Include="src\rt_SipEvent.cxx" /> + <ClCompile Include="src\rt_SipMessage.cxx" /> + <ClCompile Include="src\rt_SipSession.cxx" /> + <ClCompile Include="src\rt_SipStack.cxx" /> + <ClCompile Include="src\rt_SipUri.cxx" /> + <ClCompile Include="src\rt_SMSEncoder.cxx" /> + <ClCompile Include="src\rt_String.cxx" /> + <ClCompile Include="src\rt_Xcap.cxx" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\..\..\tinyDAV\winrt\tinyDAV.vcxproj"> + <Project>{0f2c458a-1edb-4e09-9a22-c2209731cff2}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\tinyHTTP\winrt\tinyHTTP.vcxproj"> + <Project>{1a27423c-6535-4a49-96ec-5d209fe125f2}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\tinyIPSec\winrt\tinyIPSec.vcxproj"> + <Project>{0875a083-5118-40cc-941e-722b00295a5b}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\tinyMEDIA\winrt\tinyMEDIA.vcxproj"> + <Project>{52e43eeb-a549-4159-b254-dca225d7638b}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\tinyMSRP\winrt\tinyMSRP.vcxproj"> + <Project>{be41d117-1d61-4c12-ad9d-b20d02c79687}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\tinyNET\winrt\tinyNET.vcxproj"> + <Project>{06e58f9d-28a1-4dd4-af11-2f5239222ccc}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\tinyRTP\winrt\tinyRTP.vcxproj"> + <Project>{77a24977-079c-4e02-9717-8b2f684baa21}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\tinySAK\winrt\tinySAK.vcxproj"> + <Project>{19279f5b-cdaf-4187-9f09-2a896a828b05}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\tinySDP\winrt\tinySDP.vcxproj"> + <Project>{982d737a-0649-4c32-a00e-08992a0b7673}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\tinySIGCOMP\winrt\tinySIGCOMP.vcxproj"> + <Project>{f623cbdb-707a-4fdc-ace0-3d616e239f16}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\tinySIP\winrt\tinySIP.vcxproj"> + <Project>{1137a808-dac8-4af7-b8bb-aee8abff2f67}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\tinySMS\winrt\tinySMS.vcxproj"> + <Project>{65cdf0ff-3b84-45f3-9bb6-468c79b8e0bc}</Project> + </ProjectReference> + <ProjectReference Include="..\..\..\tinyXCAP\winrt\tinyXCAP.vcxproj"> + <Project>{49843b78-0ceb-445d-bacc-c5c5c2f6c26f}</Project> + </ProjectReference> + <ProjectReference Include="..\tinyWRAP.vcxproj"> + <Project>{5004ba7e-950d-4d60-a030-29acd38dca08}</Project> + </ProjectReference> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsPhone\v$(TargetPlatformVersion)\Microsoft.Cpp.WindowsPhone.$(TargetPlatformVersion).targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/doubango_rt.vcxproj.filters b/bindings/winrt/doubango_rt/doubango_rt.vcxproj.filters new file mode 100644 index 0000000..774b55d --- /dev/null +++ b/bindings/winrt/doubango_rt/doubango_rt.vcxproj.filters @@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Resources"> + <UniqueIdentifier>5fd0e509-b6ae-4f29-bd2a-4d2cc10f3aa0</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + <Filter Include="include"> + <UniqueIdentifier>{98c8b78c-011e-40c4-91a2-a9fcf6d9fa24}</UniqueIdentifier> + </Filter> + <Filter Include="src"> + <UniqueIdentifier>{a8badfe7-5114-4a27-bb07-76772da8a9d1}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="src\rt_SipStack.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_Enums.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_ActionConfig.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_DDebug.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_MediaContent.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_Msrp.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_SipCallback.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_SipMessage.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_SipSession.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_SipUri.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_SMSEncoder.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_Xcap.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_String.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_MediaSessionMgr.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="src\rt_SipEvent.cxx"> + <Filter>src</Filter> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ClInclude Include="include\rt_SipStack.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_Enums.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_ActionConfig.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_DDebug.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_MediaContent.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_Msrp.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_SipCallback.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_SipEvent.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_SipMessage.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_SipSession.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_SipUri.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_SMSEncoder.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_Xcap.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_String.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_MediaSessionMgr.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="include\rt_Config.h"> + <Filter>include</Filter> + </ClInclude> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/include/rt_ActionConfig.h b/bindings/winrt/doubango_rt/include/rt_ActionConfig.h new file mode 100644 index 0000000..abafc37 --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_ActionConfig.h @@ -0,0 +1,53 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +#include "rt_Enums.h" + +class ActionConfig; + +namespace doubango_rt +{ + namespace BackEnd + { + public ref class rtActionConfig sealed + { + public: + rtActionConfig(); + virtual ~rtActionConfig(); + + bool addHeader(Platform::String^ name, Platform::String^ value); +#if COM_VISIBLE + bool addPayload(Platform::String^ payload); +#else + bool addPayload(Platform::IntPtr payload, unsigned len); +#endif + bool setActiveMedia(rt_twrap_media_type_t type); + + rtActionConfig^ setResponseLine(short code, Platform::String^ phrase); + rtActionConfig^ setMediaString(rt_twrap_media_type_t type, Platform::String^ key, Platform::String^ value); + rtActionConfig^ setMediaInt(rt_twrap_media_type_t type, Platform::String^ key, int value); + + internal: + ActionConfig* getWrappedActionConfig(){ return m_pActionConfig; } + + private: + ActionConfig* m_pActionConfig; + }; + } +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/include/rt_Config.h b/bindings/winrt/doubango_rt/include/rt_Config.h new file mode 100644 index 0000000..e8d7dde --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_Config.h @@ -0,0 +1,31 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +#define rtSafeDelete(ptr) if((ptr)) delete (ptr), (ptr) = nullptr; + +#if COM_VISIBLE +# define OVERRIDE_FUNC(fun) +# define VISIBLE_VOID_PTR Platform::String^ +# define VISIBLE_VOID_PTR_2_VOID_PTR(ptr) rtString::toUtf8((ptr)).data() +#else +# define OVERRIDE_FUNC(fun) fun +# define VISIBLE_VOID_PTR Platform::IntPtr +# define VISIBLE_VOID_PTR_2_VOID_PTR(ptr) (void*)((ptr)) +#endif +
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/include/rt_DDebug.h b/bindings/winrt/doubango_rt/include/rt_DDebug.h new file mode 100644 index 0000000..e4300b5 --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_DDebug.h @@ -0,0 +1,53 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +#include "rt_Config.h" + +class DDebugCallback; +class DDebugCallbackProxy; + +namespace doubango_rt +{ + namespace BackEnd + { + public interface class rtIDDebugCallback + { + virtual int OnDebugInfo(Platform::String^ message); + virtual int OnDebugWarn(Platform::String^ message); + virtual int OnDebugError(Platform::String^ message); + virtual int OnDebugFatal(Platform::String^ message); + }; + + public ref class rtDDebugCallback sealed + { + internal: + rtDDebugCallback(rtIDDebugCallback^ pI); + public: + virtual ~rtDDebugCallback(); + friend class DDebugCallbackProxy; + + internal: + const DDebugCallback* getWrappedCallback(); + + private: + rtIDDebugCallback^ m_pI; + DDebugCallbackProxy* m_pCallback; + }; + } +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/include/rt_Enums.h b/bindings/winrt/doubango_rt/include/rt_Enums.h new file mode 100644 index 0000000..78e97bf --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_Enums.h @@ -0,0 +1,333 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +#include "rt_config.h" + +#include "tinysip.h" +#include "tinymsrp.h" +#include "tinymedia.h" + +#include "Common.h" + +namespace doubango_rt +{ + namespace BackEnd + { + public enum class rtConstants + { + rt_tsip_event_code_dialog_transport_error = tsip_event_code_dialog_transport_error, + rt_tsip_event_code_dialog_global_error = tsip_event_code_dialog_global_error, + rt_tsip_event_code_dialog_message_error = tsip_event_code_dialog_message_error, + + // 8xx ==> success + rt_tsip_event_code_dialog_request_incoming = tsip_event_code_dialog_request_incoming, + rt_tsip_event_code_dialog_request_outgoing = tsip_event_code_dialog_request_outgoing, + rt_tsip_event_code_dialog_request_cancelled = tsip_event_code_dialog_request_cancelled, + rt_tsip_event_code_dialog_request_sent = tsip_event_code_dialog_request_sent, + + // 9xx ==> Informational + rt_tsip_event_code_dialog_connecting = tsip_event_code_dialog_connecting, + rt_tsip_event_code_dialog_connected = tsip_event_code_dialog_connected, + rt_tsip_event_code_dialog_terminating = tsip_event_code_dialog_terminating, + rt_tsip_event_code_dialog_terminated = tsip_event_code_dialog_terminated, + rt_tsip_event_code_stack_starting = tsip_event_code_stack_starting, + rt_tsip_event_code_stack_started = tsip_event_code_stack_started, + rt_tsip_event_code_stack_stopping = tsip_event_code_stack_stopping, + rt_tsip_event_code_stack_stopped = tsip_event_code_stack_stopped, + rt_tsip_event_code_stack_failed_to_start = tsip_event_code_stack_failed_to_start, + rt_tsip_event_code_stack_failed_to_stop = tsip_event_code_stack_failed_to_stop + }; + + public enum class rt_twrap_media_type_t + { + twrap_media_none = twrap_media_none, + + twrap_media_audio = twrap_media_audio, + twrap_media_video = twrap_media_video, + twrap_media_msrp = twrap_media_msrp, + twrap_media_t140 = twrap_media_t140, + twrap_media_bfcp = twrap_media_bfcp, + twrap_media_bfcp_audio = twrap_media_bfcp_audio, + twrap_media_bfcp_video = twrap_media_bfcp_video, + + twrap_media_audiovideo = twrap_media_audiovideo, /* @deprecated */ + twrap_media_audio_video = twrap_media_audio_video, + }; + + public enum class rt_tmedia_bandwidth_level_t + { + tmedia_bl_low = tmedia_bl_low, + tmedia_bl_medium = tmedia_bl_medium, + tmedia_bl_hight = tmedia_bl_hight, + tmedia_bl_unrestricted = tmedia_bl_unrestricted + }; + + public enum class rt_tmedia_pref_video_size_t + {/* must be sorted like this */ + tmedia_pref_video_size_sqcif = tmedia_pref_video_size_sqcif, // 128 x 98 + tmedia_pref_video_size_qcif = tmedia_pref_video_size_qcif, // 176 x 144 + tmedia_pref_video_size_qvga = tmedia_pref_video_size_qvga, // 320 x 240 + tmedia_pref_video_size_cif = tmedia_pref_video_size_cif, // 352 x 288 + tmedia_pref_video_size_hvga = tmedia_pref_video_size_hvga, // 480 x 320 + tmedia_pref_video_size_vga = tmedia_pref_video_size_vga, // 640 x 480 + tmedia_pref_video_size_4cif = tmedia_pref_video_size_4cif, // 704 x 576 + tmedia_pref_video_size_wvga = tmedia_pref_video_size_wvga, // 800 x 480 + tmedia_pref_video_size_svga = tmedia_pref_video_size_svga, // 800 x 600 + tmedia_pref_video_size_480p = tmedia_pref_video_size_480p, // 852 x 480 + tmedia_pref_video_size_xga = tmedia_pref_video_size_xga, // 1024 x 768 + tmedia_pref_video_size_720p = tmedia_pref_video_size_720p, // 1280 x 720 + tmedia_pref_video_size_16cif = tmedia_pref_video_size_16cif, // 1408 x 1152 + tmedia_pref_video_size_1080p = tmedia_pref_video_size_1080p, // 1920 x 1080 + }; + + public enum class rt_tmedia_profile_t + { + tmedia_profile_default = tmedia_profile_default, + tmedia_profile_rtcweb = tmedia_profile_rtcweb + }; + + public enum class rt_tmedia_qos_strength_t + { + tmedia_qos_strength_none = tmedia_qos_strength_none, + tmedia_qos_strength_failure = tmedia_qos_strength_failure, + tmedia_qos_strength_unknown = tmedia_qos_strength_unknown, + tmedia_qos_strength_optional = tmedia_qos_strength_optional, + tmedia_qos_strength_mandatory = tmedia_qos_strength_mandatory + }; + + public enum class rt_tmedia_qos_stype_t + { + tmedia_qos_stype_none = tmedia_qos_stype_none, + + tmedia_qos_stype_segmented = tmedia_qos_stype_segmented, + tmedia_qos_stype_e2e = tmedia_qos_stype_e2e, + }; + + public enum class rt_tmedia_srtp_mode_t + { + tmedia_srtp_mode_none = tmedia_srtp_mode_none, + tmedia_srtp_mode_optional = tmedia_srtp_mode_optional, + tmedia_srtp_mode_mandatory = tmedia_srtp_mode_mandatory + }; + + public enum class rt_tmedia_srtp_type_t + { + tmedia_srtp_type_none = tmedia_srtp_type_none, + tmedia_srtp_type_sdes = tmedia_srtp_type_sdes, + tmedia_srtp_type_dtls = tmedia_srtp_type_dtls, + tmedia_srtp_type_sdes_dtls = tmedia_srtp_type_sdes_dtls + }; + + public enum class rt_tmedia_t140_data_type_t + { + tmedia_t140_data_type_utf8 = tmedia_t140_data_type_utf8, + tmedia_t140_data_type_zero_width_no_break_space = tmedia_t140_data_type_zero_width_no_break_space, + tmedia_t140_data_type_backspace = tmedia_t140_data_type_backspace, + tmedia_t140_data_type_esc = tmedia_t140_data_type_esc, + tmedia_t140_data_type_cr = tmedia_t140_data_type_cr, + tmedia_t140_data_type_lf = tmedia_t140_data_type_lf, + tmedia_t140_data_type_cr_lf = tmedia_t140_data_type_cr_lf, + tmedia_t140_data_type_bell = tmedia_t140_data_type_bell, + tmedia_t140_data_type_sos = tmedia_t140_data_type_sos, + tmedia_t140_data_type_string_term = tmedia_t140_data_type_string_term, + tmedia_t140_data_type_graphic_start = tmedia_t140_data_type_graphic_start, + tmedia_t140_data_type_graphic_end = tmedia_t140_data_type_graphic_end, + tmedia_t140_data_type_loss_char_char = tmedia_t140_data_type_loss_char_char, + tmedia_t140_data_type_loss_utf8 = tmedia_t140_data_type_loss_utf8, + }; + + public enum class rt_tmedia_type_t + { + tmedia_none = tmedia_none, + tmedia_ghost = tmedia_ghost, + + tmedia_audio = tmedia_audio, + tmedia_video = tmedia_video, + tmedia_chat = tmedia_chat, + tmedia_file = tmedia_file, + tmedia_t38 = tmedia_t38, + tmedia_t140 = tmedia_t140, + + tmedia_msrp = tmedia_msrp, + tmedia_audiovideo = tmedia_audiovideo, + + tmedia_all = tmedia_all + }; + + public enum class rt_tmsrp_event_type_t + { + tmsrp_event_type_none = tmsrp_event_type_none, + tmsrp_event_type_connected = tmsrp_event_type_connected, + tmsrp_event_type_disconnected = tmsrp_event_type_disconnected, + tmsrp_event_type_message = tmsrp_event_type_message, + }; + + public enum class rt_tmsrp_request_type_t + { + tmsrp_NONE = tmsrp_NONE, + + tmsrp_SEND = tmsrp_SEND, + tmsrp_REPORT = tmsrp_REPORT, + tmsrp_AUTH = tmsrp_AUTH + }; + + public enum class rt_tsip_info_event_type_t + { + tsip_i_info = tsip_i_info, + tsip_ao_info = tsip_ao_info, + }; + + public enum class rt_tsip_invite_event_type_t + { + tsip_i_newcall = tsip_i_newcall, + + tsip_i_request = tsip_i_request, + tsip_ao_request = tsip_ao_request, + + tsip_o_ect_trying = tsip_o_ect_trying, + tsip_o_ect_accepted = tsip_o_ect_accepted, + tsip_o_ect_completed = tsip_o_ect_completed, + tsip_o_ect_failed = tsip_o_ect_failed, + tsip_o_ect_notify = tsip_o_ect_notify, + tsip_i_ect_requested = tsip_i_ect_requested, + tsip_i_ect_newcall = tsip_i_ect_newcall, + tsip_i_ect_completed = tsip_i_ect_completed, + tsip_i_ect_failed = tsip_i_ect_failed, + tsip_i_ect_notify = tsip_i_ect_notify, + + tsip_m_early_media = tsip_m_early_media, + tsip_m_updating = tsip_m_updating, + tsip_m_updated = tsip_m_updated, + + tsip_m_local_hold_ok = tsip_m_local_hold_ok, + tsip_m_local_hold_nok = tsip_m_local_hold_nok, + tsip_m_local_resume_ok = tsip_m_local_resume_ok, + tsip_m_local_resume_nok = tsip_m_local_resume_nok, + tsip_m_remote_hold = tsip_m_remote_hold, + tsip_m_remote_resume = tsip_m_remote_resume, + }; + + public enum class rt_tsip_message_event_type_t + { + tsip_i_message = tsip_i_message, + tsip_ao_message = tsip_ao_message, + }; + + public enum class rt_tsip_options_event_type_t + { + tsip_i_options = tsip_i_options, + tsip_ao_options = tsip_ao_options, + }; + + public enum class rt_tsip_publish_event_type_t + { + tsip_i_publish = tsip_i_publish, + tsip_ao_publish = tsip_ao_publish, + + tsip_i_unpublish = tsip_i_unpublish, + tsip_ao_unpublish = tsip_ao_unpublish + }; + + public enum class rt_tsip_register_event_type_t + { + tsip_i_newreg = tsip_i_newreg, + + tsip_i_register = tsip_i_register, + tsip_ao_register = tsip_ao_register, + + tsip_i_unregister = tsip_i_unregister, + tsip_ao_unregister = tsip_ao_unregister, + }; + + public enum class rt_tsip_request_type_t + { + tsip_NONE = tsip_NONE, + + tsip_ACK = tsip_ACK, + tsip_BYE = tsip_BYE, + tsip_CANCEL = tsip_CANCEL, + tsip_INVITE = tsip_INVITE, + tsip_OPTIONS = tsip_OPTIONS, + tsip_REGISTER = tsip_REGISTER, + tsip_SUBSCRIBE = tsip_SUBSCRIBE, + tsip_NOTIFY = tsip_NOTIFY, + tsip_REFER = tsip_REFER, + tsip_INFO = tsip_INFO, + tsip_UPDATE = tsip_UPDATE, + tsip_MESSAGE = tsip_MESSAGE, + tsip_PUBLISH = tsip_PUBLISH, + tsip_PRACK = tsip_PRACK + }; + + public enum class rt_tsip_subscribe_event_type_t + { + tsip_i_subscribe = tsip_i_subscribe, + tsip_ao_subscribe = tsip_ao_subscribe, + + tsip_i_unsubscribe = tsip_i_unsubscribe, + tsip_ao_unsubscribe = tsip_ao_unsubscribe, + + tsip_i_notify = tsip_i_notify, + tsip_ao_notify = tsip_ao_notify + }; + + public enum class rt_tdav_codec_id_t + { + tdav_codec_id_none = tmedia_codec_id_none, + + tdav_codec_id_amr_nb_oa = tmedia_codec_id_amr_nb_oa, + tdav_codec_id_amr_nb_be = tmedia_codec_id_amr_nb_be, + tdav_codec_id_amr_wb_oa = tmedia_codec_id_amr_wb_oa, + tdav_codec_id_amr_wb_be = tmedia_codec_id_amr_wb_be, + tdav_codec_id_gsm = tmedia_codec_id_gsm, + tdav_codec_id_pcma = tmedia_codec_id_pcma, + tdav_codec_id_pcmu = tmedia_codec_id_pcmu, + tdav_codec_id_ilbc = tmedia_codec_id_ilbc, + tdav_codec_id_speex_nb = tmedia_codec_id_speex_nb, + tdav_codec_id_speex_wb = tmedia_codec_id_speex_wb, + tdav_codec_id_speex_uwb = tmedia_codec_id_speex_uwb, + tdav_codec_id_bv16 = tmedia_codec_id_bv16, + tdav_codec_id_bv32 = tmedia_codec_id_bv32, + tdav_codec_id_opus = tmedia_codec_id_opus, + tdav_codec_id_g729ab = tmedia_codec_id_g729ab, + tdav_codec_id_g722 = tmedia_codec_id_g722, + + tdav_codec_id_h261 = tmedia_codec_id_h261, + tdav_codec_id_h263 = tmedia_codec_id_h263, + tdav_codec_id_h263p = tmedia_codec_id_h263p, + tdav_codec_id_h263pp = tmedia_codec_id_h263pp, + tdav_codec_id_h264_bp = tmedia_codec_id_h264_bp, + tdav_codec_id_h264_mp = tmedia_codec_id_h264_mp, + tdav_codec_id_h264_hp = tmedia_codec_id_h264_hp, + tdav_codec_id_h264_bp10 = tmedia_codec_id_h264_bp, // @deprecated + tdav_codec_id_h264_bp20 = tmedia_codec_id_h264_bp, // @deprecated + tdav_codec_id_h264_bp30 = tmedia_codec_id_h264_bp, // @deprecated + tdav_codec_id_h264_svc = tmedia_codec_id_h264_svc, + tdav_codec_id_theora = tmedia_codec_id_theora, + tdav_codec_id_mp4ves_es = tmedia_codec_id_mp4ves_es, + tdav_codec_id_vp8 = tmedia_codec_id_vp8, + + tdav_codec_id_t140 = tmedia_codec_id_t140, +#if !COM_VISIBLE + tdav_codec_id_red = tmedia_codec_id_red, +#endif + tdav_codec_id_all = tmedia_codec_id_all, + }; + } +} diff --git a/bindings/winrt/doubango_rt/include/rt_MediaContent.h b/bindings/winrt/doubango_rt/include/rt_MediaContent.h new file mode 100644 index 0000000..9385aed --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_MediaContent.h @@ -0,0 +1,18 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/include/rt_MediaSessionMgr.h b/bindings/winrt/doubango_rt/include/rt_MediaSessionMgr.h new file mode 100644 index 0000000..3878667 --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_MediaSessionMgr.h @@ -0,0 +1,130 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +class MediaSessionMgr; +class Codec; + +struct tmedia_codec_s; +struct tmedia_session_mgr_s; + +namespace doubango_rt +{ + namespace BackEnd + { + enum class rt_twrap_media_type_t; + enum class rt_tmedia_profile_t; + enum class rt_tmedia_srtp_mode_t; + enum class rt_tmedia_srtp_type_t; + enum class rt_tmedia_profile_t; + enum class rt_tmedia_pref_video_size_t; + + public ref class rtCodec sealed + { + internal: + rtCodec(struct tmedia_codec_s* pCodec); + public: + virtual ~rtCodec(); + enum class rt_twrap_media_type_t getMediaType(); + Platform::String^ getName(); + Platform::String^ getDescription(); + Platform::String^ getNegFormat(); + int getAudioSamplingRate(); + int getAudioChannels(); + int getAudioPTime(); + + private: + Codec* m_pCodec; + }; + + public ref class rtMediaSessionMgr sealed + { + internal: + rtMediaSessionMgr(struct tmedia_session_mgr_s* pWrappedMgr); + + public: + virtual ~rtMediaSessionMgr(); + bool sessionSetInt32(rt_twrap_media_type_t media, Platform::String^ key, int32 value); + int32 sessionGetInt32(rt_twrap_media_type_t media, Platform::String^ key); + + bool consumerSetInt32(rt_twrap_media_type_t media, Platform::String^ key, int32 value); + bool consumerSetInt64(rt_twrap_media_type_t media, Platform::String^ key, int64 value); + + bool producerSetInt32(rt_twrap_media_type_t media, Platform::String^ key, int32 value); + bool producerSetInt64(rt_twrap_media_type_t media, Platform::String^ key, int64 value); + rtCodec^ producerGetCodec(rt_twrap_media_type_t media); + + static unsigned int registerAudioPluginFromFile(Platform::String^ path); + + uint64 getSessionId(rt_twrap_media_type_t media); + + internal: // Must be from SIP service to share same global memory space + static bool defaultsSetProfile(rt_tmedia_profile_t profile); + static rt_tmedia_profile_t defaultsGetProfile(); + static bool defaultsSetPrefVideoSize(enum class rt_tmedia_pref_video_size_t pref_video_size); + static bool defaultsSetJbMargin(uint32 jb_margin_ms); + static bool defaultsSetJbMaxLateRate(uint32 jb_late_rate_percent); + static bool defaultsSetEchoTail(uint32 echo_tail); + static uint32 defaultsGetEchoTail(); + static bool defaultsSetEchoSkew(uint32 echo_skew); + static bool defaultsSetEchoSuppEnabled(bool echo_supp_enabled); + static bool defaultsGetEchoSuppEnabled(); + static bool defaultsSetAgcEnabled(bool agc_enabled); + static bool defaultsGetAgcEnabled(); + static bool defaultsSetAgcLevel(float agc_level); + static float defaultsGetAgcLevel(); + static bool defaultsSetVadEnabled(bool vad_enabled); + static bool defaultsGetGetVadEnabled(); + static bool defaultsSetNoiseSuppEnabled(bool noise_supp_enabled); + static bool defaultsGetNoiseSuppEnabled(); + static bool defaultsSetNoiseSuppLevel(int32 noise_supp_level); + static int32 defaultsGetNoiseSuppLevel(); + static bool defaultsSet100relEnabled(bool _100rel_enabled); + static bool defaultsGet100relEnabled(); + static bool defaultsSetScreenSize(int32 sx, int32 sy); + static bool defaultsSetAudioGain(int32 producer_gain, int32 consumer_gain); + static bool defaultsSetRtpPortRange(uint16 range_start, uint16 range_stop); + static bool defaultsSetRtpSymetricEnabled(bool enabled); + static bool defaultsSetMediaType(enum class rt_twrap_media_type_t media_type); + static bool defaultsSetVolume(int32 volume); + static int32 defaultsGetVolume(); + static bool defaultsSetInviteSessionTimers(int32 timeout, Platform::String^ refresher); + static bool defaultsSetSRtpMode(enum class rt_tmedia_srtp_mode_t mode); + static enum class rt_tmedia_srtp_mode_t defaultsGetSRtpMode(); + static bool defaultsSetSRtpType(enum class rt_tmedia_srtp_type_t srtp_type); + static enum class rt_tmedia_srtp_type_t defaultsGetSRtpType(); + static bool defaultsSetRtcpEnabled(bool enabled); + static bool defaultsGetRtcpEnabled(); + static bool defaultsSetRtcpMuxEnabled(bool enabled); + static bool defaultsGetRtcpMuxEnabled(); + static bool defaultsSetIceEnabled(bool ice_enabled); + static bool defaultsSetByPassEncoding(bool enabled); + static bool defaultsGetByPassEncoding(); + static bool defaultsSetByPassDecoding(bool enabled); + static bool defaultsGetByPassDecoding(); + static bool defaultsSetVideoJbEnabled(bool enabled); + static bool defaultsGetVideoJbEnabled(); + static bool defaultsSetRtpBuffSize(unsigned buffSize); + static unsigned defaultsGetRtpBuffSize(); + static bool defaultsSetAvpfTail(unsigned tail_min, unsigned tail_max); + + private: + MediaSessionMgr* m_pMediaSessionMgr; + }; + } +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/include/rt_Msrp.h b/bindings/winrt/doubango_rt/include/rt_Msrp.h new file mode 100644 index 0000000..b0fbe26 --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_Msrp.h @@ -0,0 +1,109 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +#include "rt_Enums.h" + +class MsrpCallback; +class MsrpMessage; +class MsrpEvent; + +namespace doubango_rt +{ + namespace BackEnd + { + ref class rtMsrpSession; + + public ref class rtMsrpByteRange sealed + { + internal: + rtMsrpByteRange(int64 start, int64 end, int64 total):_start(start),_end(end),_total(total){} + public: + property int64 Start{ int64 get() { return _start; }; } + property int64 End{ int64 get() { return _end; }; } + property int64 Total{ int64 get() { return _total; }; } + private: + int64 _start, _end, _total; + }; + + public ref class rtMsrpMessage sealed + { + public: + virtual ~rtMsrpMessage(); + internal: + rtMsrpMessage(struct tmsrp_message_s *message); + + public: + bool isRequest(); + short getCode(); + Platform::String^ getPhrase(); + rt_tmsrp_request_type_t getRequestType(); +#if COM_VISIBLE + rtMsrpByteRange^ getByteRange(); +#else + void getByteRange(Platform::IntPtr start, Platform::IntPtr end, Platform::IntPtr total); +#endif + bool isLastChunck(); + bool isFirstChunck(); + bool isSuccessReport(); + Platform::String^ getMsrpHeaderValue(Platform::String^ name); + Platform::String^ getMsrpHeaderParamValue(Platform::String^ name, Platform::String^ param); + unsigned getMsrpContentLength(); +#if COM_VISIBLE + Platform::String^ getMsrpContent(unsigned maxsize); +#else + unsigned getMsrpContent(Platform::IntPtr output, unsigned maxsize); +#endif + + private: + MsrpMessage* m_pMsrpMessage; + }; + + public ref class rtMsrpEvent sealed + { + internal: + rtMsrpEvent(const struct tmsrp_event_s *event); + public: + virtual ~rtMsrpEvent(); + + rt_tmsrp_event_type_t getType(); + rtMsrpSession^ getSipSession(); + rtMsrpMessage^ getMessage(); + + private: + MsrpEvent* m_pMsrpEvent; + }; + + public interface class rtIMsrpCallback + { + virtual int OnEvent(rtMsrpEvent^ pEvent); + }; + public ref class rtMsrpCallback sealed + { + internal: + rtMsrpCallback(rtIMsrpCallback^ pI); + const MsrpCallback* getWrappedCallback(){ return m_pCallback; } + public: + virtual ~rtMsrpCallback(); + + private: + MsrpCallback* m_pCallback; + rtIMsrpCallback^ m_pI; + }; + } +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/include/rt_SMSEncoder.h b/bindings/winrt/doubango_rt/include/rt_SMSEncoder.h new file mode 100644 index 0000000..9385aed --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_SMSEncoder.h @@ -0,0 +1,18 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/include/rt_SipCallback.h b/bindings/winrt/doubango_rt/include/rt_SipCallback.h new file mode 100644 index 0000000..1f0a9e0 --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_SipCallback.h @@ -0,0 +1,70 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +class SipCallback; +class SipCallbackProxy; + +namespace doubango_rt +{ + namespace BackEnd + { + ref class rtDialogEvent; + ref class rtStackEvent; + + ref class rtInviteEvent; + ref class rtMessagingEvent; + ref class rtInfoEvent; + ref class rtOptionsEvent; + ref class rtPublicationEvent; + ref class rtRegistrationEvent; + ref class rtSubscriptionEvent; + + public interface class rtISipCallback + { + virtual int OnDialogEvent(rtDialogEvent^ e); + virtual int OnStackEvent(rtStackEvent^ e); + + virtual int OnInviteEvent(rtInviteEvent^ e); + virtual int OnMessagingEvent(rtMessagingEvent^ e); + virtual int OnInfoEvent(rtInfoEvent^ e); + virtual int OnOptionsEvent(rtOptionsEvent^ e); + virtual int OnPublicationEvent(rtPublicationEvent^ e); + virtual int OnRegistrationEvent(rtRegistrationEvent^ e); + virtual int OnSubscriptionEvent(rtSubscriptionEvent^ e); + }; + + public ref class rtSipCallback sealed + { + internal: + rtSipCallback(rtISipCallback^ pI); + public: + virtual ~rtSipCallback(); + friend class SipCallbackProxy; + + internal: + const SipCallback* getWrappedCallback(); + + private: + rtISipCallback^ m_pI; + SipCallbackProxy* m_pCallback; + }; + } +} + + diff --git a/bindings/winrt/doubango_rt/include/rt_SipEvent.h b/bindings/winrt/doubango_rt/include/rt_SipEvent.h new file mode 100644 index 0000000..e615bde --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_SipEvent.h @@ -0,0 +1,244 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +#include "rt_Config.h" +#include "rt_Enums.h" + +struct tsip_event_s; + +class SipEvent; +class DialogEvent; +class StackEvent; +class InviteEvent; +class MessagingEvent; +class InfoEvent; +class OptionsEvent; +class PublicationEvent; +class RegistrationEvent; +class SubscriptionEvent; + + +#define rtISipEvent_Declare() \ + virtual short getCode(); \ + virtual Platform::String^ getPhrase(); \ + virtual rtISipSession^ getBaseSession(); \ + virtual rtSipMessage^ getSipMessage(); \ + +#define rtISipEvent_Implement(cls) \ +short cls##::getCode(){ \ + return m_pEvent->getCode(); \ +} \ +Platform::String^ cls##::getPhrase(){ \ + return rtString::toString(m_pEvent->getPhrase()); \ +} \ +rtISipSession^ cls##::getBaseSession(){ \ + return ref new rtSipSession(const_cast<SipStack*>(m_pEvent->getStack()), const_cast<tsip_ssession_handle_t*>(m_pEvent->getWrappedEvent()->ss)); \ +} \ +rtSipMessage^ cls##::getSipMessage(){ \ + return ref new rtSipMessage(const_cast<struct tsip_message_s*>(const_cast<SipMessage*>(m_pEvent->getSipMessage())->getWrappedSipMessage())); \ +} \ + + +namespace doubango_rt +{ + namespace BackEnd + { + interface class rtISipSession; + ref class rtSipMessage; + ref class rtInviteSession; + ref class rtMsrpSession; + ref class rtCallSession; + ref class rtMessagingSession; + ref class rtInfoSession; + ref class rtOptionsSession; + ref class rtPublicationSession; + ref class rtRegistrationSession; + ref class rtSubscriptionSession; + + + /* ======================== rtISipEvent ========================*/ + public interface class rtISipEvent + { + short getCode(); + Platform::String^ getPhrase(); + rtISipSession^ getBaseSession(); + rtSipMessage^ getSipMessage(); + }; + + + /* ======================== rtDialogEvent ========================*/ + public ref class rtDialogEvent sealed : rtISipEvent + { + internal: + rtDialogEvent(const struct tsip_event_s *e); + + public: + virtual ~rtDialogEvent(); + rtISipEvent_Declare(); + + private: + DialogEvent* m_pEvent; + }; + + /* ======================== rtStackEvent ========================*/ + public ref class rtStackEvent sealed : rtISipEvent + { + internal: + rtStackEvent(const struct tsip_event_s *e); + + public: + virtual ~rtStackEvent(); + rtISipEvent_Declare(); + + private: + StackEvent* m_pEvent; + }; + + + /* ======================== rtInviteEvent ========================*/ + public ref class rtInviteEvent sealed : rtISipEvent + { + internal: + rtInviteEvent(const struct tsip_event_s *e); + + public: + virtual ~rtInviteEvent(); + rtISipEvent_Declare(); + + rt_tsip_invite_event_type_t getType(); + rt_twrap_media_type_t getMediaType(); + rtInviteSession^ getSession(); + rtCallSession^ takeCallSessionOwnership(); + rtMsrpSession^ takeMsrpSessionOwnership(); + + private: + InviteEvent* m_pEvent; + }; + + /* ======================== rtMessagingEvent ========================*/ + public ref class rtMessagingEvent sealed : rtISipEvent + { + internal: + rtMessagingEvent(const struct tsip_event_s *e); + + public: + virtual ~rtMessagingEvent(); + rtISipEvent_Declare(); + + rt_tsip_message_event_type_t getType(); + rtMessagingSession^ getSession(); + rtMessagingSession^ takeSessionOwnership(); + + private: + MessagingEvent* m_pEvent; + }; + + + /* ======================== rtInfoEvent ========================*/ + public ref class rtInfoEvent sealed : rtISipEvent + { + internal: + rtInfoEvent(const struct tsip_event_s *e); + + public: + virtual ~rtInfoEvent(); + rtISipEvent_Declare(); + + rt_tsip_info_event_type_t getType(); + rtInfoSession^ getSession(); + rtInfoSession^ takeSessionOwnership(); + + private: + InfoEvent* m_pEvent; + }; + + + /* ======================== rtOptionsEvent ========================*/ + public ref class rtOptionsEvent sealed : rtISipEvent + { + internal: + rtOptionsEvent(const struct tsip_event_s *e); + + public: + virtual ~rtOptionsEvent(); + rtISipEvent_Declare(); + + rt_tsip_options_event_type_t getType(); + rtOptionsSession^ getSession(); + rtOptionsSession^ takeSessionOwnership(); + + private: + OptionsEvent* m_pEvent; + }; + + /* ======================== rtPublicationEvent ========================*/ + public ref class rtPublicationEvent sealed : rtISipEvent + { + internal: + rtPublicationEvent(const struct tsip_event_s *e); + + public: + virtual ~rtPublicationEvent(); + rtISipEvent_Declare(); + + rt_tsip_publish_event_type_t getType(); + rtPublicationSession^ getSession(); + rtPublicationSession^ takeSessionOwnership(); + + private: + PublicationEvent* m_pEvent; + }; + + /* ======================== rtRegistrationEvent ========================*/ + public ref class rtRegistrationEvent sealed : rtISipEvent + { + internal: + rtRegistrationEvent(const struct tsip_event_s *e); + + public: + virtual ~rtRegistrationEvent(); + rtISipEvent_Declare(); + + rt_tsip_register_event_type_t getType(); + rtRegistrationSession^ getSession(); + rtRegistrationSession^ takeSessionOwnership(); + + private: + RegistrationEvent* m_pEvent; + }; + + /* ======================== rtSubscriptionEvent ========================*/ + public ref class rtSubscriptionEvent sealed : rtISipEvent + { + internal: + rtSubscriptionEvent(const struct tsip_event_s *e); + + public: + virtual ~rtSubscriptionEvent(); + rtISipEvent_Declare(); + + rt_tsip_subscribe_event_type_t getType(); + rtSubscriptionSession^ getSession(); + rtSubscriptionSession^ takeSessionOwnership(); + + private: + SubscriptionEvent* m_pEvent; + }; + } +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/include/rt_SipMessage.h b/bindings/winrt/doubango_rt/include/rt_SipMessage.h new file mode 100644 index 0000000..a61c1c3 --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_SipMessage.h @@ -0,0 +1,78 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +#include "rt_Enums.h" + +class SdpMessage; +class SipMessage; + +struct tsdp_message_s; +struct tsip_message_s; + +namespace doubango_rt +{ + namespace BackEnd + { + public ref class rtSdpMessage sealed + { + internal: + rtSdpMessage(); + rtSdpMessage(struct tsdp_message_s *message); + public: + virtual ~rtSdpMessage(); + + public: + Platform::String^ getSdpHeaderValue(Platform::String^ media, Platform::String^ name, unsigned index); + Platform::String^ getSdpHeaderValue(Platform::String^ media, Platform::String^ name); + Platform::String^ getSdpHeaderAValue(Platform::String^ media, Platform::String^ attributeName); + + private: + SdpMessage* m_pSdpMessage; + }; + + public ref class rtSipMessage sealed + { + internal: + rtSipMessage(); + rtSipMessage(struct tsip_message_s* message); + public: + virtual ~rtSipMessage(); + + public: + bool isResponse(); + rt_tsip_request_type_t getRequestType(); + short getResponseCode(); + Platform::String^ getResponsePhrase(); + Platform::String^ getSipHeaderValue(Platform::String^ name, unsigned index); + Platform::String^ getSipHeaderValue(Platform::String^ name); + Platform::String^ getSipHeaderParamValue(Platform::String^ name, Platform::String^ param, unsigned index); + Platform::String^ getSipHeaderParamValue(Platform::String^ name, Platform::String^ param); + unsigned getSipContentLength(); +#if COM_VISIBLE + Platform::String^ getSipContent(); +#else + unsigned getSipContent(Platform::IntPtr output, unsigned maxsize); +#endif + rtSdpMessage^ getSdpMessage(); + + private: + SipMessage* m_pSipMessage; + }; + } +} diff --git a/bindings/winrt/doubango_rt/include/rt_SipSession.h b/bindings/winrt/doubango_rt/include/rt_SipSession.h new file mode 100644 index 0000000..bf52ba5 --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_SipSession.h @@ -0,0 +1,510 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +#include "rt_Config.h" +#include "rt_SipStack.h" +#include "rt_SipUri.h" +#include "rt_String.h" +#include "rt_ActionConfig.h" +#include "rt_MediaSessionMgr.h" + +#include "tinysip.h" + +class SipSession; +class InviteSession; +class CallSession; +class MsrpSession; +class MessagingSession; +class InfoSession; +class OptionsSession; +class PublicationSession; +class RegistrationSession; +class SubscriptionSession; +class SipStack; + +class T140CallbackData; +class T140Callback; + +// error C4585: 'doubango_rt::rtSipSession' : A WinRT 'public ref class' must either be sealed or derive from an existing unsealed class +#define rtISession_Declare() \ + virtual unsigned getId(); \ + virtual bool haveOwnership(); \ + virtual bool addHeader(Platform::String^ name, Platform::String^ value); \ + virtual bool removeHeader(Platform::String^ name); \ + [Windows::Foundation::Metadata::DefaultOverload] \ + virtual bool addCaps(Platform::String^ name, Platform::String^ value); \ + OVERRIDE_FUNC(virtual bool addCaps(Platform::String^ name);) \ + virtual bool removeCaps(Platform::String^ name); \ + virtual bool setExpires(unsigned expires); \ + OVERRIDE_FUNC(virtual bool setFromUri(Platform::String^ fromUriString);) \ + [Windows::Foundation::Metadata::DefaultOverload] \ + virtual bool setFromUri(rtSipUri^ fromUri); \ + OVERRIDE_FUNC(virtual bool setToUri(Platform::String^ toUriString);) \ + [Windows::Foundation::Metadata::DefaultOverload] \ + virtual bool setToUri(rtSipUri^ toUri); \ + virtual bool setSilentHangup(bool silent); \ + virtual bool addSigCompCompartment(Platform::String^ compId); \ + virtual bool removeSigCompCompartment(); \ + +#define rtISession_Implement(cls) \ + unsigned cls##::getId(){ \ + return m_pSipSession->getId(); \ +} \ + bool cls##::haveOwnership(){ \ + return m_pSipSession->haveOwnership(); \ +} \ + bool cls##::addHeader(Platform::String^ name, Platform::String^ value){ \ + return m_pSipSession->addHeader(rtString::toUtf8(name).data(), rtString::toUtf8(value).data()); \ +} \ + bool cls##::removeHeader(Platform::String^ name){ \ + return m_pSipSession->removeHeader(rtString::toUtf8(name).data()); \ +} \ + bool cls##::addCaps(Platform::String^ name, Platform::String^ value){ \ + return m_pSipSession->addCaps(rtString::toUtf8(name).data(), rtString::toUtf8(value).data()); \ +} \ +OVERRIDE_FUNC(bool cls##::addCaps(Platform::String^ name){ \ + return addCaps(name, nullptr); \ +}) \ + bool cls##::removeCaps(Platform::String^ name){ \ + return m_pSipSession->removeCaps(rtString::toUtf8(name).data()); \ +} \ + bool cls##::setExpires(unsigned expires){ \ + return m_pSipSession->setExpires(expires); \ +} \ +OVERRIDE_FUNC(bool cls##::setFromUri(Platform::String^ fromUriString){ \ + return m_pSipSession->setFromUri(rtString::toUtf8(fromUriString).data()); \ +}) \ + bool cls##::setFromUri(rtSipUri^ fromUri){ \ + return m_pSipSession->setFromUri(fromUri->getWrappedUri()); \ +} \ +OVERRIDE_FUNC(bool cls##::setToUri(Platform::String^ toUriString){ \ + return m_pSipSession->setToUri(rtString::toUtf8(toUriString).data()); \ +}) \ + bool cls##::setToUri(rtSipUri^ toUri){ \ + return m_pSipSession->setToUri(toUri->getWrappedUri()); \ +} \ + bool cls##::setSilentHangup(bool silent){ \ + return m_pSipSession->setSilentHangup(silent); \ +} \ + bool cls##::addSigCompCompartment(Platform::String^ compId){ \ + return m_pSipSession->addSigCompCompartment(rtString::toUtf8(compId).data()); \ +} \ + bool cls##::removeSigCompCompartment(){ \ + return m_pSipSession->removeSigCompCompartment(); \ +}\ + + +#define rtIInviteSession_Declare() \ + [Windows::Foundation::Metadata::DefaultOverload] \ + virtual bool accept(rtActionConfig^ config); \ + OVERRIDE_FUNC(virtual bool accept();) \ + [Windows::Foundation::Metadata::DefaultOverload] \ + virtual bool hangup(rtActionConfig^ config); \ + OVERRIDE_FUNC(virtual bool hangup();) \ + [Windows::Foundation::Metadata::DefaultOverload] \ + virtual bool reject(rtActionConfig^ config); \ + OVERRIDE_FUNC(virtual bool reject();) \ + [Windows::Foundation::Metadata::DefaultOverload] \ + virtual bool sendInfo(VISIBLE_VOID_PTR payload, unsigned len, rtActionConfig^ config); \ + OVERRIDE_FUNC(virtual bool sendInfo(VISIBLE_VOID_PTR payload, unsigned len);) \ + virtual rtMediaSessionMgr^ getMediaMgr(); \ + +#define rtIInviteSession_Implement(cls) \ +bool cls##::accept(rtActionConfig^ config){ \ + return m_pSipSession->accept(config ? config->getWrappedActionConfig() : tsk_null); \ +} \ +OVERRIDE_FUNC(bool cls##::accept(){ \ + return accept(nullptr); \ +}) \ +bool cls##::hangup(rtActionConfig^ config){ \ + return m_pSipSession->hangup(config ? config->getWrappedActionConfig() : tsk_null); \ +} \ +OVERRIDE_FUNC(bool cls##::hangup(){ \ + return hangup(nullptr); \ +}) \ +bool cls##::reject(rtActionConfig^ config){ \ + return m_pSipSession->reject(config ? config->getWrappedActionConfig() : tsk_null); \ +} \ +OVERRIDE_FUNC(bool cls##::reject(){ \ + return reject(nullptr); \ +}) \ +bool cls##::sendInfo(VISIBLE_VOID_PTR payload, unsigned len, rtActionConfig^ config){ \ + return m_pSipSession->sendInfo(VISIBLE_VOID_PTR_2_VOID_PTR(payload), len, config ? config->getWrappedActionConfig() : tsk_null); \ +} \ +OVERRIDE_FUNC(bool cls##::sendInfo(VISIBLE_VOID_PTR payload, unsigned len){ \ + return sendInfo(payload, len, nullptr); \ +}) \ +rtMediaSessionMgr^ cls##::getMediaMgr(){ \ + if(m_pSipSession->getMediaMgr()){ \ + return ref new rtMediaSessionMgr(const_cast<struct tmedia_session_mgr_s*>(m_pSipSession->getMediaMgr()->getWrappedMgr())); \ + } \ + return nullptr; \ +} \ + +namespace doubango_rt +{ + namespace BackEnd + { + ref class rtMsrpCallback; + interface class rtIMsrpCallback; + + + /* ======================== rtT140CallbackData ========================*/ + public ref class rtT140CallbackData sealed + { + internal: + rtT140CallbackData(enum tmedia_t140_data_type_e data_type, const void* data_ptr, unsigned data_size); + public: + virtual ~rtT140CallbackData(); + + private: + T140CallbackData* m_pData; + }; + + /* ======================== rtT140Callback ========================*/ + public interface class rtIT140Callback + { + virtual int ondata(rtT140CallbackData^ pData); + }; + public ref class rtT140Callback sealed + { + internal: + rtT140Callback(); + const T140Callback* getWrappedCallback(){ return m_pCallback; } + + public: + rtT140Callback(rtIT140Callback^ pI) + { + m_pI = pI; + } + virtual ~rtT140Callback(); + + protected: + virtual int ondata(rtT140CallbackData^ pData){ + if(m_pI) + { + return m_pI->ondata(pData); + } + return 0; + } + + private: + T140Callback* m_pCallback; + rtIT140Callback^ m_pI; + }; + + + /* ======================== rtISipSession ========================*/ + public interface class rtISipSession + { + rtISession_Declare(); + }; + + + /* ======================== rtIInviteSession ========================*/ + public interface class rtIInviteSession : rtISipSession + { + rtIInviteSession_Declare(); + }; + + /* ======================== rtSipSession ========================*/ + public ref class rtSipSession sealed: rtISipSession + { + public: + rtSipSession(rtSipStack^ pStack); + virtual ~rtSipSession(); + internal: + rtSipSession(SipStack* pStack, tsip_ssession_handle_t* pHandle); + SipSession* getWrappedSession(){ return m_pSipSession; } + + public: + rtISession_Declare(); + + private: + SipSession* m_pSipSession; + }; + + /* ======================== rtInviteSession ========================*/ + public ref class rtInviteSession sealed: rtIInviteSession + { + public: + rtInviteSession(rtSipStack^ pStack); + virtual ~rtInviteSession(); + internal: + rtInviteSession(SipStack* pStack, tsip_ssession_handle_t* pHandle); + InviteSession* getWrappedSession(){ return m_pSipSession; } + + public: + rtISession_Declare(); + rtIInviteSession_Declare(); + + private: + InviteSession* m_pSipSession; + }; + + /* ======================== CallSession ========================*/ + public ref class rtCallSession sealed : rtIInviteSession + { + public: + rtCallSession(rtSipStack^ pStack); + virtual ~rtCallSession(); + internal: + rtCallSession(SipStack* pStack, tsip_ssession_handle_t* pHandle); + CallSession* getWrappedSession(){ return m_pSipSession; } + + public: + rtISession_Declare(); + rtIInviteSession_Declare(); + + [Windows::Foundation::Metadata::DefaultOverload] + bool call(Platform::String^ remoteUriString, rt_twrap_media_type_t media, rtActionConfig^ config); + [Windows::Foundation::Metadata::DefaultOverload] + bool call(Platform::String^ remoteUriString, rt_twrap_media_type_t media); + bool call(rtSipUri^ remoteUri, rt_twrap_media_type_t media, rtActionConfig^ config); + bool call(rtSipUri^ remoteUri, rt_twrap_media_type_t media); + + bool setSessionTimer(unsigned timeout, Platform::String^ refresher); + bool set100rel(bool enabled); + bool setRtcp(bool enabled); + bool setRtcpMux(bool enabled); + bool setICE(bool enabled); + bool setQoS(rt_tmedia_qos_stype_t type, rt_tmedia_qos_strength_t strength); + bool setVideoFps(int32_t fps); + bool setVideoBandwidthUploadMax(int32_t max); + bool setVideoBandwidthDownloadMax(int32_t max); + bool setVideoPrefSize(rt_tmedia_pref_video_size_t pref_video_size); + bool hold(rtActionConfig^ config); + bool hold(); + bool resume(rtActionConfig^ config); + bool resume(); + bool transfer(Platform::String^ referToUriString, rtActionConfig^ config); + bool transfer(Platform::String^ referToUriString); + bool acceptTransfer(rtActionConfig^ config); + bool acceptTransfer(); + bool rejectTransfer(rtActionConfig^ config); + bool rejectTransfer(); + bool sendDTMF(int number); + unsigned getSessionTransferId(); +#if COM_VISIBLE + bool sendT140Data(rt_tmedia_t140_data_type_t data_type, Platform::String^ data); +#else + bool sendT140Data(rt_tmedia_t140_data_type_t data_type, Platform::IntPtr data_ptr, unsigned data_size); +#endif + bool sendT140Data(rt_tmedia_t140_data_type_t data_type); + bool setT140Callback(rtT140Callback^ pT140Callback); + + private: + CallSession* m_pSipSession; + }; + + + /* ======================== rtMsrpSession ========================*/ + public ref class rtMsrpSession sealed : rtIInviteSession + { + public: + rtMsrpSession(rtSipStack^ pStack, rtIMsrpCallback^ pCallback); + virtual ~rtMsrpSession(); + + internal: + rtMsrpSession(SipStack* pStack, tsip_ssession_handle_t* pHandle); + MsrpSession* getWrappedSession(){ return m_pSipSession; } + + public: + rtISession_Declare(); + rtIInviteSession_Declare(); + + bool setCallback(rtIMsrpCallback^ pCallback); + [Windows::Foundation::Metadata::DefaultOverload] + bool callMsrp(Platform::String^ remoteUriString, rtActionConfig^ config); + [Windows::Foundation::Metadata::DefaultOverload] + bool callMsrp(Platform::String^ remoteUriString); + bool callMsrp(rtSipUri^ remoteUri, rtActionConfig^ config); + bool callMsrp(rtSipUri^ remoteUri); +#if COM_VISIBLE + bool sendMessage(Platform::String^ payload, rtActionConfig^ config); + bool sendMessage(Platform::String^ payload); +#else + bool sendMessage(Platform::IntPtr payload, unsigned len, rtActionConfig^ config); + bool sendMessage(Platform::IntPtr payload, unsigned len); +#endif + + private: + MsrpSession* m_pSipSession; + rtMsrpCallback^ m_pCallback; + }; + + /* ======================== rtMessagingSession ========================*/ + public ref class rtMessagingSession sealed : rtISipSession + { + internal: + rtMessagingSession(SipStack* pStack, tsip_ssession_handle_t* pHandle); + public: + rtMessagingSession(rtSipStack^ pStack); + virtual ~rtMessagingSession(); + + rtISession_Declare(); + +#if COM_VISIBLE + bool send(Platform::String^ payload, rtActionConfig^ config); + bool send(Platform::String^ payload); +#else + [Windows::Foundation::Metadata::DefaultOverload] + bool send(Platform::IntPtr payload, unsigned len, rtActionConfig^ config); + bool send(Platform::IntPtr payload, unsigned len); +#endif + [Windows::Foundation::Metadata::DefaultOverload] + bool accept(rtActionConfig^ config); + bool accept(); + [Windows::Foundation::Metadata::DefaultOverload] + bool reject(rtActionConfig^ config); + bool reject(); + + private: + MessagingSession* m_pSipSession; + }; + + + /* ======================== rtInfoSession ========================*/ + public ref class rtInfoSession sealed : rtISipSession + { + internal: + rtInfoSession(SipStack* pStack, tsip_ssession_handle_t* pHandle); + public: + rtInfoSession(rtSipStack^ pStack); + virtual ~rtInfoSession(); + + rtISession_Declare(); + +#if COM_VISIBLE + bool send(Platform::String^ payload, rtActionConfig^ config); + bool send(Platform::String^ payload); +#else + [Windows::Foundation::Metadata::DefaultOverload] + bool send(Platform::IntPtr payload, unsigned len, rtActionConfig^ config); + bool send(Platform::IntPtr payload, unsigned len); +#endif + [Windows::Foundation::Metadata::DefaultOverload] + bool accept(rtActionConfig^ config); + bool accept(); + [Windows::Foundation::Metadata::DefaultOverload] + bool reject(rtActionConfig^ config); + bool reject(); + + private: + InfoSession* m_pSipSession; + }; + + + /* ======================== rtOptionsSession ========================*/ + public ref class rtOptionsSession sealed : rtISipSession + { + internal: + rtOptionsSession(SipStack* pStack, tsip_ssession_handle_t* pHandle); + public: + rtOptionsSession(rtSipStack^ pStack); + virtual ~rtOptionsSession(); + + rtISession_Declare(); + + [Windows::Foundation::Metadata::DefaultOverload] + bool send(rtActionConfig^ config); + bool send(); + [Windows::Foundation::Metadata::DefaultOverload] + bool accept(rtActionConfig^ config); + bool accept(); + [Windows::Foundation::Metadata::DefaultOverload] + bool reject(rtActionConfig^ config); + bool reject(); + + private: + OptionsSession* m_pSipSession; + }; + + + /* ======================== rtPublicationSession ========================*/ + public ref class rtPublicationSession sealed : rtISipSession + { + internal: + rtPublicationSession(SipStack* pStack, tsip_ssession_handle_t* pHandle); + public: + rtPublicationSession(rtSipStack^ pStack); + virtual ~rtPublicationSession(); + + rtISession_Declare(); + +#if COM_VISIBLE + bool publish(Platform::String^ payload, rtActionConfig^ config); + bool publish(Platform::String^ payload); +#else + [Windows::Foundation::Metadata::DefaultOverload] + bool publish(Platform::IntPtr payload, unsigned len, rtActionConfig^ config); + bool publish(Platform::IntPtr payload, unsigned len); +#endif + [Windows::Foundation::Metadata::DefaultOverload] + bool unPublish(rtActionConfig^ config); + bool unPublish(); + + private: + PublicationSession* m_pSipSession; + }; + + + /* ======================== rtRegistrationSession ========================*/ + public ref class rtRegistrationSession sealed : rtISipSession + { + internal: + rtRegistrationSession(SipStack* pStack, tsip_ssession_handle_t* pHandle); + public: + rtRegistrationSession(rtSipStack^ pStack); + virtual ~rtRegistrationSession(); + + rtISession_Declare(); + + bool register_(rtActionConfig^ config); + bool register_(); + bool unRegister(rtActionConfig^ config); + bool unRegister(); + bool accept(rtActionConfig^ config); + bool accept(); + bool reject(rtActionConfig^ config); + bool reject(); + + private: + RegistrationSession* m_pSipSession; + }; + + /* ======================== rtSubscriptionSession ========================*/ + public ref class rtSubscriptionSession sealed : rtISipSession + { + internal: + rtSubscriptionSession(SipStack* pStack, tsip_ssession_handle_t* pHandle); + public: + rtSubscriptionSession(rtSipStack^ pStack); + virtual ~rtSubscriptionSession(); + + rtISession_Declare(); + + bool subscribe(); + bool unSubscribe(); + + private: + SubscriptionSession* m_pSipSession; + }; + } +} diff --git a/bindings/winrt/doubango_rt/include/rt_SipStack.h b/bindings/winrt/doubango_rt/include/rt_SipStack.h new file mode 100644 index 0000000..b55c5ae --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_SipStack.h @@ -0,0 +1,120 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +#include <mutex> + +class SipStack; + +namespace doubango_rt +{ + namespace BackEnd + { + ref class rtSipCallback; + interface class rtISipCallback; + ref class rtDDebugCallback; + interface class rtIDDebugCallback; + + enum class rt_tdav_codec_id_t; + + public ref class rtDnsResult sealed + { + internal: + rtDnsResult(uint16 port, Platform::String^ address):_port(port), _address(address){} + public: + property uint16 Port{ uint16 get() { return _port; }; } + property Platform::String^ Address{ Platform::String^ get() { return _address; }; } + private: + uint16 _port; + Platform::String^ _address; + }; + + public ref class rtSipStack sealed + { + public: + virtual ~rtSipStack(); + + internal: + rtSipStack(rtISipCallback^ callback, Platform::String^ realmUri, Platform::String^ impiString, Platform::String^ impuUri); + const SipStack* getWrappedStack() { return m_pSipStack; } + + public: + bool start(); + bool setDebugCallback(rtIDDebugCallback^ pCallback); + bool setDisplayName(Platform::String^ display_name); + bool setRealm(Platform::String^ realm_uri); + bool setIMPI(Platform::String^ impi); + bool setIMPU(Platform::String^ impu_uri); + bool setPassword(Platform::String^ password); + bool setAMF(Platform::String^ amf); + bool setOperatorId(Platform::String^ opid); + bool setProxyCSCF(Platform::String^ fqdn, unsigned short port, Platform::String^ transport, Platform::String^ ipversion); + bool setLocalIP(Platform::String^ ip, Platform::String^ transport); + bool setLocalIP(Platform::String^ ip); + bool setLocalPort(unsigned short port, Platform::String^ transport); + bool setLocalPort(unsigned short port); + bool setEarlyIMS(bool enabled); + bool addHeader(Platform::String^ name, Platform::String^ value); + bool removeHeader(Platform::String^ name); + bool addDnsServer(Platform::String^ ip); + bool setDnsDiscovery(bool enabled); + bool setAoR(Platform::String^ ip, int port); + bool setSigCompParams(unsigned dms, unsigned sms, unsigned cpb, bool enablePresDict); + bool addSigCompCompartment(Platform::String^ compId); + bool removeSigCompCompartment(Platform::String^ compId); + + bool setSTUNServer(Platform::String^ ip, unsigned short port); + bool setSTUNCred(Platform::String^ login, Platform::String^ password); + + bool setTLSSecAgree(bool enabled); + bool setSSLCertificates(Platform::String^ privKey, Platform::String^ pubKey, Platform::String^ caKey, bool verify); + bool setSSLCertificates(Platform::String^ privKey, Platform::String^ pubKey, Platform::String^ caKey); + bool setIPSecSecAgree(bool enabled); + bool setIPSecParameters(Platform::String^ algo, Platform::String^ ealgo, Platform::String^ mode, Platform::String^ proto); + + Platform::String^ dnsENUM(Platform::String^ service, Platform::String^ e164num, Platform::String^ domain); +#if COM_VISIBLE + rtDnsResult^ dnsNaptrSrv(Platform::String^ domain, Platform::String^ service); + rtDnsResult^ dnsSrv(Platform::String^ service); + Platform::String^ getLocalIP(Platform::String^ protocol); + uint16 getLocalPort(Platform::String^ protocol); +#else + Platform::String^ dnsNaptrSrv(Platform::String^ domain, Platform::String^ service, Platform::IntPtr port); + Platform::String^ dnsSrv(Platform::String^ service, Platform::IntPtr port); + Platform::String^ getLocalIPnPort(Platform::String^ protocol, Platform::IntPtr port); +#endif + + Platform::String^ getPreferredIdentity(); + + bool isValid(); + bool stop(); + + static bool initialize(); + static bool deInitialize(); + static void setCodecs(enum class rt_tdav_codec_id_t codecs); + static bool setCodecPriority(enum class rt_tdav_codec_id_t codec_id, int priority); + static bool isCodecSupported(enum class rt_tdav_codec_id_t codec_id); + + private: + SipStack* m_pSipStack; + rtSipCallback^ m_pSipCallback; + rtDDebugCallback^ m_pDebugCallback; + std::recursive_mutex mLock; + }; + } +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/include/rt_SipUri.h b/bindings/winrt/doubango_rt/include/rt_SipUri.h new file mode 100644 index 0000000..3917f87 --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_SipUri.h @@ -0,0 +1,60 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +#include "rt_Config.h" + +class SipUri; + +namespace doubango_rt +{ + namespace BackEnd + { + public ref class rtSipUri sealed + { + public: + virtual ~rtSipUri(); + rtSipUri(Platform::String^ uriString, Platform::String^ displayName); + rtSipUri(Platform::String^ uriString); + + + public: + static bool isValid(Platform::String^ uri); + +#if COM_VISIBLE + bool isValid_(); +#else + bool isValid(); +#endif + Platform::String^ getScheme(); + Platform::String^ getHost(); + unsigned short getPort(); + Platform::String^ getUserName(); + Platform::String^ getPassword(); + Platform::String^ getDisplayName(); + Platform::String^ getParamValue(Platform::String^ name); + void setDisplayName(Platform::String^ displayName); + + internal: + const SipUri* getWrappedUri(){ return m_pSipUri; } + + private: + SipUri* m_pSipUri; + }; + } +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/include/rt_String.h b/bindings/winrt/doubango_rt/include/rt_String.h new file mode 100644 index 0000000..5562b5d --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_String.h @@ -0,0 +1,33 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once + +#include <vector> + +namespace doubango_rt +{ + namespace BackEnd + { + ref class rtString sealed + { + internal: + static std::vector<char> toUtf8(Platform::String^ str); + static Platform::String^ toString(char const* str); + }; + } +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/include/rt_Xcap.h b/bindings/winrt/doubango_rt/include/rt_Xcap.h new file mode 100644 index 0000000..9385aed --- /dev/null +++ b/bindings/winrt/doubango_rt/include/rt_Xcap.h @@ -0,0 +1,18 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#pragma once
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/src/rt_ActionConfig.cxx b/bindings/winrt/doubango_rt/src/rt_ActionConfig.cxx new file mode 100644 index 0000000..02f713e --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_ActionConfig.cxx @@ -0,0 +1,76 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#include "rt_ActionConfig.h" +#include "rt_String.h" + +#include "ActionConfig.h" + +using namespace doubango_rt::BackEnd; +using namespace Platform; +using namespace std; + +rtActionConfig::rtActionConfig() +{ + m_pActionConfig = new ActionConfig(); +} + +rtActionConfig::~rtActionConfig() +{ + rtSafeDelete(m_pActionConfig); +} + +bool rtActionConfig::addHeader(String^ name, String^ value) +{ + return m_pActionConfig->addHeader(rtString::toUtf8(name).data(), rtString::toUtf8(value).data()); +} + +bool rtActionConfig::setActiveMedia(rt_twrap_media_type_t type) +{ + return m_pActionConfig->setActiveMedia((twrap_media_type_t)type); +} + +#if COM_VISIBLE +bool rtActionConfig::addPayload(Platform::String^ payload) +{ + static std::vector<char> _payload = rtString::toUtf8(payload); + return m_pActionConfig->addPayload(_payload.data(), _payload.size()); +} +#else +bool rtActionConfig::addPayload(IntPtr payload, unsigned len) +{ + return m_pActionConfig->addPayload((const void*)payload, len); +} +#endif /* COM_VISIBLE */ + +rtActionConfig^ rtActionConfig::setResponseLine(short code, String^ phrase) +{ + m_pActionConfig->setResponseLine(code, rtString::toUtf8(phrase).data()); + return this; +} + +rtActionConfig^ rtActionConfig::setMediaString(rt_twrap_media_type_t type, String^ key, String^ value) +{ + m_pActionConfig->setMediaString((twrap_media_type_t)type, rtString::toUtf8(key).data(), rtString::toUtf8(value).data()); + return this; +} + +rtActionConfig^ rtActionConfig::setMediaInt(rt_twrap_media_type_t type, String^ key, int value) +{ + m_pActionConfig->setMediaInt((twrap_media_type_t)type, rtString::toUtf8(key).data(), value); + return this; +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/src/rt_DDebug.cxx b/bindings/winrt/doubango_rt/src/rt_DDebug.cxx new file mode 100644 index 0000000..a03300c --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_DDebug.cxx @@ -0,0 +1,78 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#include "rt_DDebug.h" +#include "rt_String.h" + +#include "DDebug.h" + +using namespace doubango_rt::BackEnd; +using namespace Platform; +using namespace std; + +class DDebugCallbackProxy : public DDebugCallback +{ +public: + DDebugCallbackProxy(rtDDebugCallback^ pCallback) + { + m_pCallback = pCallback; + } + + ~DDebugCallbackProxy() + { + + } + + virtual int OnDebugInfo(const char* message) + { + return m_pCallback->m_pI->OnDebugInfo(rtString::toString(message)); + } + + virtual int OnDebugWarn(const char* message) + { + return m_pCallback->m_pI->OnDebugWarn(rtString::toString(message)); + } + + virtual int OnDebugError(const char* message) + { + return m_pCallback->m_pI->OnDebugError(rtString::toString(message)); + } + + virtual int OnDebugFatal(const char* message) + { + return m_pCallback->m_pI->OnDebugFatal(rtString::toString(message)); + } + +private: + rtDDebugCallback^ m_pCallback; +}; + +rtDDebugCallback::rtDDebugCallback(rtIDDebugCallback^ pI) +{ + m_pI = pI; + m_pCallback = new DDebugCallbackProxy(this); +} + +rtDDebugCallback::~rtDDebugCallback() +{ + rtSafeDelete(m_pCallback); +} + +const DDebugCallback* rtDDebugCallback::getWrappedCallback() +{ + return dynamic_cast<const DDebugCallback*>(m_pCallback); +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/src/rt_Enums.cxx b/bindings/winrt/doubango_rt/src/rt_Enums.cxx new file mode 100644 index 0000000..fa2645c --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_Enums.cxx @@ -0,0 +1,17 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/#include "rt_enums.h"
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/src/rt_MediaContent.cxx b/bindings/winrt/doubango_rt/src/rt_MediaContent.cxx new file mode 100644 index 0000000..623cb1f --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_MediaContent.cxx @@ -0,0 +1,17 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/src/rt_MediaSessionMgr.cxx b/bindings/winrt/doubango_rt/src/rt_MediaSessionMgr.cxx new file mode 100644 index 0000000..7d2c6f0 --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_MediaSessionMgr.cxx @@ -0,0 +1,374 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#include "rt_MediaSessionMgr.h" +#include "rt_Enums.h" +#include "rt_String.h" + +#include "MediaSessionMgr.h" + +using namespace doubango_rt::BackEnd; +using namespace Platform; +using namespace std; + +rtCodec::rtCodec(struct tmedia_codec_s* pCodec) +{ + m_pCodec = new Codec(pCodec); +} + +rtCodec::~rtCodec() +{ + rtSafeDelete(m_pCodec); +} + +enum class rt_twrap_media_type_t rtCodec::getMediaType() +{ + return (rt_twrap_media_type_t)m_pCodec->getMediaType(); +} + +Platform::String^ rtCodec::getName() +{ + return rtString::toString(m_pCodec->getName()); +} + +Platform::String^ rtCodec::getDescription() +{ + return rtString::toString(m_pCodec->getDescription()); +} + +Platform::String^ rtCodec::getNegFormat() +{ + return rtString::toString(m_pCodec->getNegFormat()); +} + +int rtCodec::getAudioSamplingRate() +{ + return m_pCodec->getAudioSamplingRate(); +} + +int rtCodec::getAudioChannels() +{ + return m_pCodec->getAudioChannels(); +} + +int rtCodec::getAudioPTime() +{ + return m_pCodec->getAudioPTime(); +} + + +rtMediaSessionMgr::rtMediaSessionMgr(struct tmedia_session_mgr_s* pWrappedMgr) +{ + m_pMediaSessionMgr = new MediaSessionMgr(pWrappedMgr); +} + +rtMediaSessionMgr::~rtMediaSessionMgr() +{ + rtSafeDelete(m_pMediaSessionMgr); +} + +bool rtMediaSessionMgr::sessionSetInt32(rt_twrap_media_type_t media, Platform::String^ key, int32 value) +{ + return m_pMediaSessionMgr->sessionSetInt32((twrap_media_type_t)media, rtString::toUtf8(key).data(), value); +} + +int32 rtMediaSessionMgr::sessionGetInt32(rt_twrap_media_type_t media, Platform::String^ key) +{ + return m_pMediaSessionMgr->sessionGetInt32((twrap_media_type_t)media, rtString::toUtf8(key).data()); +} + +bool rtMediaSessionMgr::consumerSetInt32(rt_twrap_media_type_t media, Platform::String^ key, int32 value) +{ + return m_pMediaSessionMgr->consumerSetInt32((twrap_media_type_t)media, rtString::toUtf8(key).data(), value); +} + +bool rtMediaSessionMgr::consumerSetInt64(rt_twrap_media_type_t media, Platform::String^ key, int64 value) +{ + return m_pMediaSessionMgr->consumerSetInt64((twrap_media_type_t)media, rtString::toUtf8(key).data(), value); +} + +bool rtMediaSessionMgr::producerSetInt32(rt_twrap_media_type_t media, Platform::String^ key, int32 value) +{ + return m_pMediaSessionMgr->producerSetInt32((twrap_media_type_t)media, rtString::toUtf8(key).data(), value); +} + +bool rtMediaSessionMgr::producerSetInt64(rt_twrap_media_type_t media, Platform::String^ key, int64 value) +{ + return m_pMediaSessionMgr->producerSetInt64((twrap_media_type_t)media, rtString::toUtf8(key).data(), value); +} + +rtCodec^ rtMediaSessionMgr::producerGetCodec(rt_twrap_media_type_t media) +{ + Codec* c = m_pMediaSessionMgr->producerGetCodec((twrap_media_type_t)media); + if(c) + { + rtCodec^ codec = ref new rtCodec(const_cast<struct tmedia_codec_s*>(c->getWrappedCodec())); + rtSafeDelete(c); + return codec; + } + return nullptr; +} + +unsigned int rtMediaSessionMgr::registerAudioPluginFromFile(Platform::String^ path) +{ + return MediaSessionMgr::registerAudioPluginFromFile(rtString::toUtf8(path).data()); +} + +uint64 rtMediaSessionMgr::getSessionId(rt_twrap_media_type_t media) +{ + return m_pMediaSessionMgr->getSessionId((twrap_media_type_t)media); +} + +bool rtMediaSessionMgr::defaultsSetProfile(rt_tmedia_profile_t profile) +{ + return MediaSessionMgr::defaultsSetProfile((tmedia_profile_t) profile); +} + +rt_tmedia_profile_t rtMediaSessionMgr::defaultsGetProfile() +{ + return (rt_tmedia_profile_t)MediaSessionMgr::defaultsGetProfile(); +} + +bool rtMediaSessionMgr::defaultsSetPrefVideoSize(enum class rt_tmedia_pref_video_size_t pref_video_size) +{ + return MediaSessionMgr::defaultsSetPrefVideoSize((tmedia_pref_video_size_t) pref_video_size); +} + +bool rtMediaSessionMgr::defaultsSetJbMargin(uint32 jb_margin_ms) +{ + return MediaSessionMgr::defaultsSetJbMargin(jb_margin_ms); +} + +bool rtMediaSessionMgr::defaultsSetJbMaxLateRate(uint32 jb_late_rate_percent) +{ + return MediaSessionMgr::defaultsSetJbMaxLateRate(jb_late_rate_percent); +} + +bool rtMediaSessionMgr::defaultsSetEchoTail(uint32 echo_tail) +{ + return MediaSessionMgr::defaultsSetEchoTail(echo_tail); +} + +uint32 rtMediaSessionMgr::defaultsGetEchoTail() +{ + return MediaSessionMgr::defaultsGetEchoTail(); +} + +bool rtMediaSessionMgr::defaultsSetEchoSkew(uint32 echo_skew) +{ + return MediaSessionMgr::defaultsSetEchoSkew(echo_skew); +} + +bool rtMediaSessionMgr::defaultsSetEchoSuppEnabled(bool echo_supp_enabled) +{ + return MediaSessionMgr::defaultsSetEchoSuppEnabled(echo_supp_enabled); +} + +bool rtMediaSessionMgr::defaultsGetEchoSuppEnabled() +{ + return MediaSessionMgr::defaultsGetEchoSuppEnabled(); +} + +bool rtMediaSessionMgr::defaultsSetAgcEnabled(bool agc_enabled) +{ + return MediaSessionMgr::defaultsSetAgcEnabled(agc_enabled); +} + +bool rtMediaSessionMgr::defaultsGetAgcEnabled() +{ + return MediaSessionMgr::defaultsGetAgcEnabled(); +} + +bool rtMediaSessionMgr::defaultsSetAgcLevel(float agc_level) +{ + return MediaSessionMgr::defaultsSetAgcLevel(agc_level); +} + +float rtMediaSessionMgr::defaultsGetAgcLevel() +{ + return MediaSessionMgr::defaultsGetAgcLevel(); +} + +bool rtMediaSessionMgr::defaultsSetVadEnabled(bool vad_enabled) +{ + return MediaSessionMgr::defaultsSetVadEnabled(vad_enabled); +} + +bool rtMediaSessionMgr::defaultsGetGetVadEnabled() +{ + return MediaSessionMgr::defaultsGetGetVadEnabled(); +} + +bool rtMediaSessionMgr::defaultsSetNoiseSuppEnabled(bool noise_supp_enabled) +{ + return MediaSessionMgr::defaultsSetNoiseSuppEnabled(noise_supp_enabled); +} + +bool rtMediaSessionMgr::defaultsGetNoiseSuppEnabled() +{ + return MediaSessionMgr::defaultsGetNoiseSuppEnabled(); +} + +bool rtMediaSessionMgr::defaultsSetNoiseSuppLevel(int32 noise_supp_level) +{ + return MediaSessionMgr::defaultsSetNoiseSuppLevel(noise_supp_level); +} + +int32 rtMediaSessionMgr::defaultsGetNoiseSuppLevel() +{ + return MediaSessionMgr::defaultsGetNoiseSuppLevel(); +} + +bool rtMediaSessionMgr::defaultsSet100relEnabled(bool _100rel_enabled) +{ + return MediaSessionMgr::defaultsSet100relEnabled(_100rel_enabled); +} + +bool rtMediaSessionMgr::defaultsGet100relEnabled() +{ + return MediaSessionMgr::defaultsGet100relEnabled(); +} + +bool rtMediaSessionMgr::defaultsSetScreenSize(int32 sx, int32 sy) +{ + return MediaSessionMgr::defaultsSetScreenSize(sx, sy); +} + +bool rtMediaSessionMgr::defaultsSetAudioGain(int32 producer_gain, int32 consumer_gain) +{ + return MediaSessionMgr::defaultsSetAudioGain(producer_gain, consumer_gain); +} + +bool rtMediaSessionMgr::defaultsSetRtpPortRange(uint16 range_start, uint16 range_stop) +{ + return MediaSessionMgr::defaultsSetRtpPortRange(range_start, range_stop); +} + +bool rtMediaSessionMgr::defaultsSetRtpSymetricEnabled(bool enabled) +{ + return MediaSessionMgr::defaultsSetRtpSymetricEnabled(enabled); +} + +bool rtMediaSessionMgr::defaultsSetMediaType(enum class rt_twrap_media_type_t media_type) +{ + return MediaSessionMgr::defaultsSetMediaType((twrap_media_type_t) media_type); +} + +bool rtMediaSessionMgr::defaultsSetVolume(int32 volume) +{ + return MediaSessionMgr::defaultsSetVolume(volume); +} + +int32 rtMediaSessionMgr::defaultsGetVolume() +{ + return MediaSessionMgr::defaultsGetVolume(); +} + +bool rtMediaSessionMgr::defaultsSetInviteSessionTimers(int32 timeout, Platform::String^ refresher) +{ + return MediaSessionMgr::defaultsSetInviteSessionTimers(timeout, rtString::toUtf8(refresher).data()); +} + +bool rtMediaSessionMgr::defaultsSetSRtpMode(enum class rt_tmedia_srtp_mode_t mode) +{ + return MediaSessionMgr::defaultsSetSRtpMode((tmedia_srtp_mode_t) mode); +} + +enum class rt_tmedia_srtp_mode_t rtMediaSessionMgr::defaultsGetSRtpMode() +{ + return (rt_tmedia_srtp_mode_t)MediaSessionMgr::defaultsGetSRtpMode(); +} + +bool rtMediaSessionMgr::defaultsSetSRtpType(enum class rt_tmedia_srtp_type_t srtp_type) +{ + return MediaSessionMgr::defaultsSetSRtpType((tmedia_srtp_type_t) srtp_type); +} + +enum class rt_tmedia_srtp_type_t rtMediaSessionMgr::defaultsGetSRtpType() +{ + return (rt_tmedia_srtp_type_t)MediaSessionMgr::defaultsGetSRtpType(); +} + +bool rtMediaSessionMgr::defaultsSetRtcpEnabled(bool enabled) +{ + return MediaSessionMgr::defaultsSetRtcpEnabled(enabled); +} + +bool rtMediaSessionMgr::defaultsGetRtcpEnabled() +{ + return MediaSessionMgr::defaultsGetRtcpEnabled(); +} + +bool rtMediaSessionMgr::defaultsSetRtcpMuxEnabled(bool enabled) +{ + return MediaSessionMgr::defaultsSetRtcpMuxEnabled(enabled); +} + +bool rtMediaSessionMgr::defaultsGetRtcpMuxEnabled() +{ + return MediaSessionMgr::defaultsGetRtcpMuxEnabled(); +} + +bool rtMediaSessionMgr::defaultsSetIceEnabled(bool ice_enabled) +{ + return MediaSessionMgr::defaultsSetIceEnabled(ice_enabled); +} + +bool rtMediaSessionMgr::defaultsSetByPassEncoding(bool enabled) +{ + return MediaSessionMgr::defaultsSetByPassEncoding(enabled); +} + +bool rtMediaSessionMgr::defaultsGetByPassEncoding() +{ + return MediaSessionMgr::defaultsGetByPassEncoding(); +} + +bool rtMediaSessionMgr::defaultsSetByPassDecoding(bool enabled) +{ + return MediaSessionMgr::defaultsSetByPassDecoding(enabled); +} + +bool rtMediaSessionMgr::defaultsGetByPassDecoding() +{ + return MediaSessionMgr::defaultsGetByPassDecoding(); +} + +bool rtMediaSessionMgr::defaultsSetVideoJbEnabled(bool enabled) +{ + return MediaSessionMgr::defaultsSetVideoJbEnabled(enabled); +} + +bool rtMediaSessionMgr::defaultsGetVideoJbEnabled() +{ + return MediaSessionMgr::defaultsGetVideoJbEnabled(); +} + +bool rtMediaSessionMgr::defaultsSetRtpBuffSize(unsigned buffSize) +{ + return MediaSessionMgr::defaultsSetRtpBuffSize(buffSize); +} + +unsigned rtMediaSessionMgr::defaultsGetRtpBuffSize() +{ + return MediaSessionMgr::defaultsGetRtpBuffSize(); +} + +bool rtMediaSessionMgr::defaultsSetAvpfTail(unsigned tail_min, unsigned tail_max) +{ + return MediaSessionMgr::defaultsSetAvpfTail(tail_min, tail_max); +} diff --git a/bindings/winrt/doubango_rt/src/rt_Msrp.cxx b/bindings/winrt/doubango_rt/src/rt_Msrp.cxx new file mode 100644 index 0000000..1d09f06 --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_Msrp.cxx @@ -0,0 +1,194 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#include "rt_Msrp.h" +#include "rt_String.h" +#include "rt_SipSession.h" + +#include "SipSession.h" +#include "Msrp.h" + +#include <assert.h> + +using namespace doubango_rt::BackEnd; +using namespace Platform; +using namespace std; + + +// +// rtMsrpMessage +// + +rtMsrpMessage::rtMsrpMessage(struct tmsrp_message_s *message) +{ + m_pMsrpMessage= new MsrpMessage(message); +} + +rtMsrpMessage::~rtMsrpMessage() +{ + rtSafeDelete(m_pMsrpMessage); +} + +bool rtMsrpMessage::isRequest() +{ + return m_pMsrpMessage->isRequest(); +} + +short rtMsrpMessage::getCode() +{ + return m_pMsrpMessage->getCode(); +} + +String^ rtMsrpMessage::getPhrase() +{ + return rtString::toString(m_pMsrpMessage->getPhrase()); +} + +rt_tmsrp_request_type_t rtMsrpMessage::getRequestType() +{ + return (rt_tmsrp_request_type_t)m_pMsrpMessage->getRequestType(); +} + +#if COM_VISIBLE +rtMsrpByteRange^ rtMsrpMessage::getByteRange() +{ + int64_t _start = -1, _end = -1, _total = -1; + m_pMsrpMessage->getByteRange(&_start, &_end, &_total); + return ref new rtMsrpByteRange(_start, _end, _total); +} +#else +void rtMsrpMessage::getByteRange(IntPtr start, IntPtr end, IntPtr total) +{ + int64_t _start = -1, _end = -1, _total = -1; + m_pMsrpMessage->getByteRange(&_start, &_end, &_total); + // IntPtr is 32bit or 64bit -> 32 to be sure not memory errors will raise + *((int32_t*)(void*)start) = (int32_t)_start; + *((int32_t*)(void*)end) = (int32_t)_end; + *((int32_t*)(void*)total) = (int32_t)_total; +} +#endif /* COM_VISIBLE */ + +bool rtMsrpMessage::isLastChunck() +{ + return m_pMsrpMessage->isLastChunck(); +} + +bool rtMsrpMessage::isFirstChunck() +{ + return m_pMsrpMessage->isFirstChunck(); +} + +bool rtMsrpMessage::isSuccessReport() +{ + return m_pMsrpMessage->isSuccessReport(); +} + +String^ rtMsrpMessage::getMsrpHeaderValue(String^ name) +{ + return rtString::toString(m_pMsrpMessage->getMsrpHeaderValue(rtString::toUtf8(name).data())); +} + +String^ rtMsrpMessage::getMsrpHeaderParamValue(String^ name, String^ param) +{ + return rtString::toString(m_pMsrpMessage->getMsrpHeaderParamValue(rtString::toUtf8(name).data(), rtString::toUtf8(param).data())); +} + +unsigned rtMsrpMessage::getMsrpContentLength() +{ + return m_pMsrpMessage->getMsrpContentLength(); +} + +#if COM_VISIBLE +String^ rtMsrpMessage::getMsrpContent(unsigned maxsize) +{ + if(maxsize) + { + void* _s = calloc(maxsize + 1, 1); + if(_s) + { + unsigned len = m_pMsrpMessage->getMsrpContent(_s, maxsize); + String^ s = rtString::toString((const char*)_s); + free(_s); + return s; + } + } + return nullptr; +} +#else +unsigned rtMsrpMessage::getMsrpContent(IntPtr output, unsigned maxsize) +{ + return m_pMsrpMessage->getMsrpContent((void*)output, maxsize); +} +#endif /* COM_VISIBLE */ + + +// +// rtMsrpEvent +// + +rtMsrpEvent::rtMsrpEvent(const struct tmsrp_event_s *event) +{ + m_pMsrpEvent = new MsrpEvent(event); +} + +rtMsrpEvent::~rtMsrpEvent() +{ + rtSafeDelete(m_pMsrpEvent); +} + +rt_tmsrp_event_type_t rtMsrpEvent::getType() +{ + return (rt_tmsrp_event_type_t)m_pMsrpEvent->getType(); +} + +rtMsrpSession^ rtMsrpEvent::getSipSession() +{ + if(m_pMsrpEvent->getSipSession()) + { + assert(0); // FIXME: Not implemented + return nullptr; + // return ref new rtMsrpSession(m_pMsrpEvent->getSipSession()->getWrappedSession()); + } + return nullptr; +} + +rtMsrpMessage^ rtMsrpEvent::getMessage() +{ + if(m_pMsrpEvent->getMessage()) + { + return ref new rtMsrpMessage(const_cast<struct tmsrp_message_s *>(const_cast<MsrpMessage*>(m_pMsrpEvent->getMessage())->getWrappedMsrpMessage())); + } + return nullptr; +} + +// +// rtMsrpCallback +// + +rtMsrpCallback::rtMsrpCallback(rtIMsrpCallback^ pI) +{ + m_pI = pI; + m_pCallback = new MsrpCallback(); +} + +rtMsrpCallback::~rtMsrpCallback() +{ + rtSafeDelete(m_pCallback); +} + + +
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/src/rt_SMSEncoder.cxx b/bindings/winrt/doubango_rt/src/rt_SMSEncoder.cxx new file mode 100644 index 0000000..623cb1f --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_SMSEncoder.cxx @@ -0,0 +1,17 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/src/rt_SipCallback.cxx b/bindings/winrt/doubango_rt/src/rt_SipCallback.cxx new file mode 100644 index 0000000..68c6299 --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_SipCallback.cxx @@ -0,0 +1,135 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#include "rt_SipCallback.h" +#include "rt_SipEvent.h" + +#include "SipEvent.h" +#include "SipCallback.h" + +using namespace doubango_rt::BackEnd; +using namespace Platform; +using namespace std; + +class SipCallbackProxy : public SipCallback +{ +public: + SipCallbackProxy(rtSipCallback^ rtCallback) + { + m_pCallback = rtCallback; + } + + virtual int OnDialogEvent(const DialogEvent* e) override + { + if(e && m_pCallback && m_pCallback->m_pI) + { + return m_pCallback->m_pI->OnDialogEvent(ref new rtDialogEvent(const_cast<tsip_event_t*>(const_cast<DialogEvent*>(e)->getWrappedEvent()))); + } + return 0; + } + + virtual int OnStackEvent(const StackEvent* e) override + { + if(e && m_pCallback && m_pCallback->m_pI) + { + return m_pCallback->m_pI->OnStackEvent(ref new rtStackEvent(const_cast<tsip_event_t*>(const_cast<StackEvent*>(e)->getWrappedEvent()))); + } + return 0; + } + + virtual int OnInviteEvent(const InviteEvent* e) override + { + if(e && m_pCallback && m_pCallback->m_pI) + { + return m_pCallback->m_pI->OnInviteEvent(ref new rtInviteEvent(const_cast<tsip_event_t*>(const_cast<InviteEvent*>(e)->getWrappedEvent()))); + } + return 0; + } + + virtual int OnMessagingEvent(const MessagingEvent* e) override + { + if(e && m_pCallback && m_pCallback->m_pI) + { + return m_pCallback->m_pI->OnMessagingEvent(ref new rtMessagingEvent(const_cast<tsip_event_t*>(const_cast<MessagingEvent*>(e)->getWrappedEvent()))); + } + return 0; + } + + virtual int OnInfoEvent(const InfoEvent* e) override + { + if(m_pCallback && m_pCallback->m_pI) + { + return m_pCallback->m_pI->OnInfoEvent(ref new rtInfoEvent(const_cast<tsip_event_t*>(const_cast<InfoEvent*>(e)->getWrappedEvent()))); + } + return 0; + } + + virtual int OnOptionsEvent(const OptionsEvent* e) override + { + if(e && m_pCallback && m_pCallback->m_pI) + { + return m_pCallback->m_pI->OnOptionsEvent(ref new rtOptionsEvent(const_cast<tsip_event_t*>(const_cast<OptionsEvent*>(e)->getWrappedEvent()))); + } + return 0; + } + + virtual int OnPublicationEvent(const PublicationEvent* e) override + { + if(e && m_pCallback && m_pCallback->m_pI) + { + return m_pCallback->m_pI->OnPublicationEvent(ref new rtPublicationEvent(const_cast<tsip_event_t*>(const_cast<PublicationEvent*>(e)->getWrappedEvent()))); + } + return 0; + } + + virtual int OnRegistrationEvent(const RegistrationEvent* e) override + { + if(m_pCallback && m_pCallback->m_pI) + { + return m_pCallback->m_pI->OnRegistrationEvent(ref new rtRegistrationEvent(const_cast<tsip_event_t*>(const_cast<RegistrationEvent*>(e)->getWrappedEvent()))); + } + return 0; + } + + virtual int OnSubscriptionEvent(const SubscriptionEvent* e) override + { + if(e && m_pCallback && m_pCallback->m_pI) + { + return m_pCallback->m_pI->OnSubscriptionEvent(ref new rtSubscriptionEvent(const_cast<tsip_event_t*>(const_cast<SubscriptionEvent*>(e)->getWrappedEvent()))); + } + return 0; + } + +private: + rtSipCallback^ m_pCallback; +}; + +rtSipCallback::rtSipCallback(rtISipCallback^ pI) +{ + m_pI = pI; + m_pCallback = new SipCallbackProxy(this); +} + +rtSipCallback::~rtSipCallback() +{ + rtSafeDelete(m_pCallback); +} + +const SipCallback* rtSipCallback::getWrappedCallback() +{ + return dynamic_cast<const SipCallback*>(m_pCallback); +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/src/rt_SipEvent.cxx b/bindings/winrt/doubango_rt/src/rt_SipEvent.cxx new file mode 100644 index 0000000..1bd414e --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_SipEvent.cxx @@ -0,0 +1,239 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#include "rt_SipEvent.h" +#include "rt_String.h" +#include "rt_SipMessage.h" +#include "rt_SipSession.h" + +#include "tinysip/tsip_event.h" + +#include "SipMessage.h" +#include "SipSession.h" +#include "SipEvent.h" + +using namespace doubango_rt::BackEnd; +using namespace Platform; +using namespace std; + +#define rt_getSession_Implement(cls) \ +rt##cls##Session^ rt##cls##Event::getSession(){ \ + const cls##Session* s = m_pEvent->getSession(); \ + if(s){ \ + return ref new rt##cls##Session(const_cast<SipStack*>(const_cast<##cls##Session*>(s)->getStack()), const_cast<tsip_ssession_handle_t*>(const_cast<##cls##Session*>(s)->getWrappedSession())); \ + } \ + return nullptr; \ +} \ + +#define rt_takeOwnership_Implement(cls, name, session) \ +rt##name##Session^ rt##cls##Event::take##session##Ownership(){ \ + name##Session* s = m_pEvent->take##session##Ownership(); \ + if(s){ \ + rt##name##Session^ _s = ref new rt##name##Session(const_cast<SipStack*>(s->getStack()), const_cast<tsip_ssession_handle_t*>(s->getWrappedSession())); \ + rtSafeDelete(s); \ + return _s; \ + } \ + return nullptr; \ +} \ + +/* ======================== rtDialogEvent ========================*/ +rtISipEvent_Implement(rtDialogEvent); + +rtDialogEvent::rtDialogEvent(const struct tsip_event_s *e) +{ + m_pEvent = new DialogEvent(e); +} + +rtDialogEvent::~rtDialogEvent() +{ + rtSafeDelete(m_pEvent); +} + + +/* ======================== rtStackEvent ========================*/ +rtISipEvent_Implement(rtStackEvent); + +rtStackEvent::rtStackEvent(const struct tsip_event_s *e) +{ + m_pEvent = new StackEvent(e); +} + +rtStackEvent::~rtStackEvent() +{ + rtSafeDelete(m_pEvent); +} + + + /* ======================== rtInviteEvent ========================*/ +rtISipEvent_Implement(rtInviteEvent); + +rtInviteEvent::rtInviteEvent(const struct tsip_event_s *e) +{ + m_pEvent = new InviteEvent(e); +} + +rtInviteEvent::~rtInviteEvent() +{ + rtSafeDelete(m_pEvent); +} + +rt_tsip_invite_event_type_t rtInviteEvent::getType() +{ + return (rt_tsip_invite_event_type_t)m_pEvent->getType(); +} + +rt_twrap_media_type_t rtInviteEvent::getMediaType() +{ + return (rt_twrap_media_type_t)m_pEvent->getMediaType(); +} + +rt_getSession_Implement(Invite); +rt_takeOwnership_Implement(Invite, Call, CallSession); +rt_takeOwnership_Implement(Invite, Msrp, MsrpSession); + +/* ======================== rtMessagingEvent ========================*/ +rtISipEvent_Implement(rtMessagingEvent); + +rtMessagingEvent::rtMessagingEvent(const struct tsip_event_s *e) +{ + m_pEvent = new MessagingEvent(e); +} + + +rtMessagingEvent::~rtMessagingEvent() +{ + rtSafeDelete(m_pEvent); +} + +rt_tsip_message_event_type_t rtMessagingEvent::getType() +{ + return (rt_tsip_message_event_type_t)m_pEvent->getType(); +} + +rt_getSession_Implement(Messaging); +rt_takeOwnership_Implement(Messaging, Messaging, Session); + + +/* ======================== rtInfoEvent ========================*/ +rtISipEvent_Implement(rtInfoEvent); + +rtInfoEvent::rtInfoEvent(const struct tsip_event_s *e) +{ + m_pEvent = new InfoEvent(e); +} + +rtInfoEvent::~rtInfoEvent() +{ + rtSafeDelete(m_pEvent); +} + +rt_tsip_info_event_type_t rtInfoEvent::getType() +{ + return (rt_tsip_info_event_type_t)m_pEvent->getType(); +} + +rt_getSession_Implement(Info); +rt_takeOwnership_Implement(Info, Info, Session); + + +/* ======================== rtOptionsEvent ========================*/ +rtISipEvent_Implement(rtOptionsEvent); + +rtOptionsEvent::rtOptionsEvent(const struct tsip_event_s *e) +{ + m_pEvent = new OptionsEvent(e); +} + +rtOptionsEvent::~rtOptionsEvent() +{ + rtSafeDelete(m_pEvent); +} + +rt_tsip_options_event_type_t rtOptionsEvent::getType() +{ + return (rt_tsip_options_event_type_t)m_pEvent->getType(); +} + +rt_getSession_Implement(Options); +rt_takeOwnership_Implement(Options, Options, Session); + + +/* ======================== rtPublicationEvent ========================*/ +rtISipEvent_Implement(rtPublicationEvent); + +rtPublicationEvent::rtPublicationEvent(const struct tsip_event_s *e) +{ + m_pEvent = new PublicationEvent(e); +} + +rtPublicationEvent::~rtPublicationEvent() +{ + rtSafeDelete(m_pEvent); +} + +rt_tsip_publish_event_type_t rtPublicationEvent::getType() +{ + return (rt_tsip_publish_event_type_t)m_pEvent->getType(); +} + +rt_getSession_Implement(Publication); +rt_takeOwnership_Implement(Publication, Publication, Session); + + + +/* ======================== rtRegistrationEvent ========================*/ +rtISipEvent_Implement(rtRegistrationEvent); + +rtRegistrationEvent::rtRegistrationEvent(const struct tsip_event_s *e) +{ + m_pEvent = new RegistrationEvent(e); +} + +rtRegistrationEvent::~rtRegistrationEvent() +{ + rtSafeDelete(m_pEvent); +} + +rt_tsip_register_event_type_t rtRegistrationEvent::getType() +{ + return (rt_tsip_register_event_type_t)m_pEvent->getType(); +} + +rt_getSession_Implement(Registration); +rt_takeOwnership_Implement(Registration, Registration, Session); + + +/* ======================== rtSubscriptionEvent ========================*/ +rtISipEvent_Implement(rtSubscriptionEvent); + +rtSubscriptionEvent::rtSubscriptionEvent(const struct tsip_event_s *e) +{ + m_pEvent = new SubscriptionEvent(e); +} + +rtSubscriptionEvent::~rtSubscriptionEvent() +{ + rtSafeDelete(m_pEvent); +} + +rt_tsip_subscribe_event_type_t rtSubscriptionEvent::getType() +{ + return (rt_tsip_subscribe_event_type_t)m_pEvent->getType(); +} + +rt_getSession_Implement(Subscription); +rt_takeOwnership_Implement(Subscription, Subscription, Session);
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/src/rt_SipMessage.cxx b/bindings/winrt/doubango_rt/src/rt_SipMessage.cxx new file mode 100644 index 0000000..55e05d9 --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_SipMessage.cxx @@ -0,0 +1,171 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#include "rt_SipMessage.h" +#include "rt_String.h" + +#include "SipMessage.h" + +using namespace doubango_rt::BackEnd; +using namespace Platform; +using namespace std; + +// +// rtSdpMessage +// + +rtSdpMessage::rtSdpMessage() + :m_pSdpMessage(NULL) +{ +} + +rtSdpMessage::rtSdpMessage(struct tsdp_message_s *message) +{ + m_pSdpMessage = new SdpMessage(message); +} + +rtSdpMessage::~rtSdpMessage() +{ + rtSafeDelete(m_pSdpMessage); +} + +String^ rtSdpMessage::getSdpHeaderValue(String^ media, String^ name, unsigned index) +{ + if(m_pSdpMessage) + { + char * _str = m_pSdpMessage->getSdpHeaderValue + (rtString::toUtf8(media).data(), + rtString::toUtf8(media).data()[0], + index); + String^ str = rtString::toString(_str); + TSK_FREE(str); + return str; + } + return nullptr; +} + +String^ rtSdpMessage::getSdpHeaderValue(String^ media, String^ name) +{ + return getSdpHeaderValue(media, name, 0); +} + +String^ rtSdpMessage::getSdpHeaderAValue(String^ media, String^ attributeName) +{ + if(m_pSdpMessage) + { + char * _str = m_pSdpMessage->getSdpHeaderAValue + (rtString::toUtf8(media).data(), + rtString::toUtf8(attributeName).data()); + String^ str = rtString::toString(_str); + TSK_FREE(str); + return str; + } + return nullptr; +} + +// +// rtSipMessage +// + +rtSipMessage::rtSipMessage() + :m_pSipMessage(NULL) +{ +} + +rtSipMessage::rtSipMessage(struct tsip_message_s* message) +{ + m_pSipMessage = new SipMessage(message); +} + +rtSipMessage::~rtSipMessage() +{ + rtSafeDelete(m_pSipMessage); +} + +bool rtSipMessage::isResponse() +{ + return m_pSipMessage ? m_pSipMessage->isResponse() : false; +} + +rt_tsip_request_type_t rtSipMessage::getRequestType() +{ + return (rt_tsip_request_type_t)(m_pSipMessage ? m_pSipMessage->getRequestType() : 0); +} + +short rtSipMessage::getResponseCode() +{ + return m_pSipMessage ? m_pSipMessage->getResponseCode() : 0; +} + +String^ rtSipMessage::getResponsePhrase() +{ + return m_pSipMessage ? rtString::toString(m_pSipMessage->getResponsePhrase()) : nullptr; +} + +String^ rtSipMessage::getSipHeaderValue(String^ name, unsigned index) +{ + return m_pSipMessage ? rtString::toString(m_pSipMessage->getSipHeaderValue(rtString::toUtf8(name).data(), index)) : nullptr; +} + +String^ rtSipMessage::getSipHeaderValue(String^ name) +{ + return getSipHeaderValue(name, 0); +} + +String^ rtSipMessage::getSipHeaderParamValue(String^ name, String^ param, unsigned index) +{ + return m_pSipMessage ? rtString::toString(m_pSipMessage->getSipHeaderParamValue(rtString::toUtf8(name).data(), rtString::toUtf8(param).data(), index)) : nullptr; +} + +String^ rtSipMessage::getSipHeaderParamValue(String^ name, String^ param) +{ + return getSipHeaderParamValue(name, param, 0); +} + +unsigned rtSipMessage::getSipContentLength() +{ + return m_pSipMessage ? m_pSipMessage->getSipContentLength() : 0; +} + +#if COM_VISIBLE +String^ rtSipMessage::getSipContent() +{ + unsigned len = getSipContentLength(); + if(len > 0) + { + void* data_ptr = calloc(len, 1); + if(data_ptr) + { + m_pSipMessage->getSipContent(data_ptr, len); + String^ s = rtString::toString((const char*)data_ptr); + free(data_ptr); + return s; + } + } + return nullptr; +} +#else +unsigned rtSipMessage::getSipContent(IntPtr output, unsigned maxsize) +{ + return m_pSipMessage ? m_pSipMessage->getSipContent((void*)output, maxsize) : 0; +} +#endif + +rtSdpMessage^ rtSipMessage::getSdpMessage() +{ + return m_pSipMessage ? ref new rtSdpMessage(const_cast<struct tsdp_message_s *>(const_cast<SdpMessage*>(m_pSipMessage->getSdpMessage())->getWrappedSdpMessage())) : nullptr; +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/src/rt_SipSession.cxx b/bindings/winrt/doubango_rt/src/rt_SipSession.cxx new file mode 100644 index 0000000..872a2e2 --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_SipSession.cxx @@ -0,0 +1,662 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#include "rt_SipSession.h" +#include "rt_String.h" +#include "rt_SipStack.h" +#include "rt_SipUri.h" +#include "rt_Msrp.h" + +#include "SipSession.h" +#include "MediaSessionMgr.h" + +using namespace doubango_rt::BackEnd; +using namespace Platform; +using namespace std; + +/* ======================== T140Callback ========================*/ +rtT140CallbackData::rtT140CallbackData(enum tmedia_t140_data_type_e data_type, const void* data_ptr, unsigned data_size) +{ + m_pData = new T140CallbackData(data_type, data_ptr, data_size); +} + +rtT140CallbackData::~rtT140CallbackData() +{ + rtSafeDelete(m_pData); +} + +/* ======================== rtT140Callback ========================*/ + +rtT140Callback::rtT140Callback() +{ + m_pCallback = new T140Callback(); +} + +rtT140Callback::~rtT140Callback() +{ + rtSafeDelete(m_pCallback); +} + +/* ======================== rtSipSession ========================*/ +rtISession_Implement(rtSipSession); + +rtSipSession::rtSipSession(rtSipStack^ pStack) +{ + m_pSipSession = new SipSession(const_cast<SipStack*>(pStack->getWrappedStack())); +} + +rtSipSession::rtSipSession(SipStack* pStack, tsip_ssession_handle_t* pHandle) +{ + m_pSipSession = new SipSession(pStack, pHandle); +} + +rtSipSession::~rtSipSession() +{ + rtSafeDelete(m_pSipSession); +} + + +/* ======================== rtInviteSession ========================*/ +rtISession_Implement(rtInviteSession); +rtIInviteSession_Implement(rtInviteSession); + +rtInviteSession::rtInviteSession(rtSipStack^ pStack) +{ + m_pSipSession = new InviteSession(const_cast<SipStack*>(pStack->getWrappedStack())); +} + +rtInviteSession::rtInviteSession(SipStack* pStack, tsip_ssession_handle_t* pHandle) +{ + m_pSipSession = new InviteSession(pStack, pHandle); +} + +rtInviteSession::~rtInviteSession() +{ + rtSafeDelete(m_pSipSession); +} + + +/* ======================== rtCallSession ========================*/ +rtISession_Implement(rtCallSession); +rtIInviteSession_Implement(rtCallSession); + +rtCallSession::rtCallSession(rtSipStack^ pStack) +{ + m_pSipSession = new CallSession(const_cast<SipStack*>(pStack->getWrappedStack())); +} + +rtCallSession::rtCallSession(SipStack* pStack, tsip_ssession_handle_t* pHandle) +{ + m_pSipSession = new CallSession(pStack, pHandle); +} + +rtCallSession::~rtCallSession() +{ + rtSafeDelete(m_pSipSession); +} + + +bool rtCallSession::call(String^ remoteUriString, rt_twrap_media_type_t media, rtActionConfig^ config) +{ + return m_pSipSession->call(rtString::toUtf8(remoteUriString).data(), (twrap_media_type_t)media, config ? config->getWrappedActionConfig() : tsk_null); + +} + +bool rtCallSession::call(String^ remoteUriString, rt_twrap_media_type_t media) +{ + return call(remoteUriString, media, nullptr); +} + +bool rtCallSession::call(rtSipUri^ remoteUri, rt_twrap_media_type_t media, rtActionConfig^ config) +{ + return m_pSipSession->call(remoteUri->getWrappedUri(), (twrap_media_type_t)media, config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtCallSession::call(rtSipUri^ remoteUri, rt_twrap_media_type_t media) +{ + return call(remoteUri, media, nullptr); +} + +bool rtCallSession::setSessionTimer(unsigned timeout, String^ refresher) +{ + return m_pSipSession->setSessionTimer(timeout, rtString::toUtf8(refresher).data()); +} + +bool rtCallSession::set100rel(bool enabled) +{ + return m_pSipSession->set100rel(enabled); +} + +bool rtCallSession::setRtcp(bool enabled) +{ + return m_pSipSession->setRtcp(enabled); +} + +bool rtCallSession::setRtcpMux(bool enabled) +{ + return m_pSipSession->setRtcpMux(enabled); +} + +bool rtCallSession::setICE(bool enabled) +{ + return m_pSipSession->setICE(enabled); +} + +bool rtCallSession::setQoS(rt_tmedia_qos_stype_t type, rt_tmedia_qos_strength_t strength) +{ + return m_pSipSession->setQoS((tmedia_qos_stype_t) type, (tmedia_qos_strength_t) strength); +} + +bool rtCallSession::setVideoFps(int32_t fps) +{ + return m_pSipSession->setVideoFps(fps); +} + +bool rtCallSession::setVideoBandwidthUploadMax(int32_t max) +{ + return m_pSipSession->setVideoBandwidthUploadMax(max); +} + +bool rtCallSession::setVideoBandwidthDownloadMax(int32_t max) +{ + return m_pSipSession->setVideoBandwidthDownloadMax(max); +} + +bool rtCallSession::setVideoPrefSize(rt_tmedia_pref_video_size_t pref_video_size) +{ + return m_pSipSession->setVideoPrefSize((tmedia_pref_video_size_t)pref_video_size); +} + +bool rtCallSession::hold(rtActionConfig^ config) +{ + return m_pSipSession->hold(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtCallSession::hold() +{ + return hold(nullptr); +} + +bool rtCallSession::resume(rtActionConfig^ config) +{ + return m_pSipSession->resume(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtCallSession::resume() +{ + return resume(nullptr); +} + +bool rtCallSession::transfer(String^ referToUriString, rtActionConfig^ config) +{ + return m_pSipSession->transfer(rtString::toUtf8(referToUriString).data(), config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtCallSession::transfer(String^ referToUriString) +{ + return transfer(referToUriString, nullptr); +} + +bool rtCallSession::acceptTransfer(rtActionConfig^ config) +{ + return m_pSipSession->acceptTransfer(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtCallSession::acceptTransfer() +{ + return acceptTransfer(nullptr); +} + +bool rtCallSession::rejectTransfer(rtActionConfig^ config) +{ + return m_pSipSession->rejectTransfer(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtCallSession::rejectTransfer() +{ + return rejectTransfer(nullptr); +} + +bool rtCallSession::sendDTMF(int number) +{ + return m_pSipSession->sendDTMF(number); +} + +unsigned rtCallSession::getSessionTransferId() +{ + return m_pSipSession->getSessionTransferId(); +} + +#if COM_VISIBLE +bool rtCallSession::sendT140Data(rt_tmedia_t140_data_type_t data_type, String^ data) +{ + std::vector<char> _data = rtString::toUtf8(data); + return m_pSipSession->sendT140Data((tmedia_t140_data_type_t) data_type, (const void*)_data.data(), _data.size()); +} +#else +bool rtCallSession::sendT140Data(rt_tmedia_t140_data_type_t data_type, IntPtr data_ptr, unsigned data_size) +{ + return m_pSipSession->sendT140Data((tmedia_t140_data_type_t) data_type, (const void*)data_ptr, data_size); +} + +#endif + +bool rtCallSession::sendT140Data(rt_tmedia_t140_data_type_t data_type) +{ + return sendT140Data(data_type, nullptr +#if !COM_VISIBLE + , 0 +#endif + ); +} + +bool rtCallSession::setT140Callback(rtT140Callback^ pT140Callback) +{ + return m_pSipSession->setT140Callback(const_cast<T140Callback*>(pT140Callback->getWrappedCallback())); +} + + +/* ======================== rtMsrpSession ========================*/ +rtISession_Implement(rtMsrpSession); +rtIInviteSession_Implement(rtMsrpSession); + +rtMsrpSession::rtMsrpSession(rtSipStack^ pStack, rtIMsrpCallback^ pCallback) +{ + m_pCallback = ref new rtMsrpCallback(pCallback); + m_pSipSession = new MsrpSession(const_cast<SipStack*>(pStack->getWrappedStack()), const_cast<MsrpCallback*>(m_pCallback->getWrappedCallback())); +} + +rtMsrpSession::rtMsrpSession(SipStack* pStack, tsip_ssession_handle_t* pHandle) +{ + m_pSipSession = new MsrpSession(pStack, pHandle); +} + +rtMsrpSession::~rtMsrpSession() +{ + rtSafeDelete(m_pSipSession); + rtSafeDelete(m_pCallback); +} + +bool rtMsrpSession::setCallback(rtIMsrpCallback^ pCallback) +{ + rtSafeDelete(m_pCallback); + if(!pCallback) + { + return m_pSipSession->setCallback(tsk_null); + return true; + } + m_pCallback = ref new rtMsrpCallback(pCallback); + return m_pSipSession->setCallback(const_cast<MsrpCallback*>(m_pCallback->getWrappedCallback())); +} + +bool rtMsrpSession::callMsrp(Platform::String^ remoteUriString, rtActionConfig^ config) +{ + return m_pSipSession->callMsrp(rtString::toUtf8(remoteUriString).data(), config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtMsrpSession::callMsrp(Platform::String^ remoteUriString) +{ + return callMsrp(remoteUriString, nullptr); +} + +bool rtMsrpSession::callMsrp(rtSipUri^ remoteUri, rtActionConfig^ config) +{ + return m_pSipSession->callMsrp(remoteUri->getWrappedUri(), config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtMsrpSession::callMsrp(rtSipUri^ remoteUri) +{ + return callMsrp(remoteUri, nullptr); +} + +#if COM_VISIBLE +bool rtMsrpSession::sendMessage(String^ payload, rtActionConfig^ config) +{ + std::vector<char> _payload = rtString::toUtf8(payload); + return m_pSipSession->sendMessage((const void*)_payload.data(), _payload.size(), config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtMsrpSession::sendMessage(Platform::String^ payload) +{ + return sendMessage(payload, nullptr); +} + +#else +bool rtMsrpSession::sendMessage(Platform::IntPtr payload, unsigned len, rtActionConfig^ config) +{ + return m_pSipSession->sendMessage((const void*)payload, len, config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtMsrpSession::sendMessage(Platform::IntPtr payload, unsigned len) +{ + return sendMessage(payload, len, nullptr); +} +#endif /* COM_VISIBLE */ + + +/* ======================== rtMessagingSession ========================*/ +rtISession_Implement(rtMessagingSession); + +rtMessagingSession::rtMessagingSession(SipStack* pStack, tsip_ssession_handle_t* pHandle) +{ + m_pSipSession = new MessagingSession(pStack, pHandle); +} + +rtMessagingSession::rtMessagingSession(rtSipStack^ pStack) +{ + m_pSipSession = new MessagingSession(const_cast<SipStack*>(pStack->getWrappedStack())); +} + +rtMessagingSession::~rtMessagingSession() +{ + rtSafeDelete(m_pSipSession); +} + +#if COM_VISIBLE +bool rtMessagingSession::send(String^ payload, rtActionConfig^ config) +{ + std::vector<char>_payload = rtString::toUtf8(payload); + return m_pSipSession->send((const void*)_payload.data(), _payload.size(), config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtMessagingSession::send(Platform::String^ payload) +{ + return send(payload, nullptr); +} + +#else +bool rtMessagingSession::send(IntPtr payload, unsigned len, rtActionConfig^ config) +{ + return m_pSipSession->send((const void*)payload, len, config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtMessagingSession::send(IntPtr payload, unsigned len) +{ + return send(payload, len, nullptr); +} +#endif + +bool rtMessagingSession::accept(rtActionConfig^ config) +{ + return m_pSipSession->accept(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtMessagingSession::accept() +{ + return accept(nullptr); +} + +bool rtMessagingSession::reject(rtActionConfig^ config) +{ + return m_pSipSession->reject(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtMessagingSession::reject() +{ + return reject(nullptr); +} + +/* ======================== rtInfoSession ========================*/ +rtISession_Implement(rtInfoSession); + +rtInfoSession::rtInfoSession(SipStack* pStack, tsip_ssession_handle_t* pHandle) +{ + m_pSipSession = new InfoSession(pStack, pHandle); +} + +rtInfoSession::rtInfoSession(rtSipStack^ pStack) +{ + m_pSipSession = new InfoSession(const_cast<SipStack*>(pStack->getWrappedStack())); +} + +rtInfoSession::~rtInfoSession() +{ + rtSafeDelete(m_pSipSession); +} + +#if COM_VISIBLE +bool rtInfoSession::send(Platform::String^ payload, rtActionConfig^ config) +{ + std::vector<char>_payload = rtString::toUtf8(payload); + return m_pSipSession->send((const void*)_payload.data(), _payload.size(), config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtInfoSession::send(Platform::String^ payload) +{ + return send(payload, nullptr); +} +#else +bool rtInfoSession::send(IntPtr payload, unsigned len, rtActionConfig^ config) +{ + return m_pSipSession->send((const void*)payload, len, config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtInfoSession::send(IntPtr payload, unsigned len) +{ + return send(payload, len, nullptr); +} +#endif + +bool rtInfoSession::accept(rtActionConfig^ config) +{ + return m_pSipSession->accept(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtInfoSession::accept() +{ + return accept(nullptr); +} + +bool rtInfoSession::reject(rtActionConfig^ config) +{ + return m_pSipSession->reject(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtInfoSession::reject() +{ + return reject(nullptr); +} + + + +/* ======================== rtOptionsSession ========================*/ +rtISession_Implement(rtOptionsSession); + +rtOptionsSession::rtOptionsSession(SipStack* pStack, tsip_ssession_handle_t* pHandle) +{ + m_pSipSession = new OptionsSession(pStack, pHandle); +} + +rtOptionsSession::rtOptionsSession(rtSipStack^ pStack) +{ + m_pSipSession = new OptionsSession(const_cast<SipStack*>(pStack->getWrappedStack())); +} + +rtOptionsSession::~rtOptionsSession() +{ + rtSafeDelete(m_pSipSession); +} + +bool rtOptionsSession::send(rtActionConfig^ config) +{ + return m_pSipSession->send(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtOptionsSession::send() +{ + return send(nullptr); +} + +bool rtOptionsSession::accept(rtActionConfig^ config) +{ + return m_pSipSession->accept(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtOptionsSession::accept() +{ + return accept(nullptr); +} + +bool rtOptionsSession::reject(rtActionConfig^ config) +{ + return m_pSipSession->reject(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtOptionsSession::reject() +{ + return reject(nullptr); +} + + + +/* ======================== rtPublicationSession ========================*/ +rtISession_Implement(rtPublicationSession); + +rtPublicationSession::rtPublicationSession(rtSipStack^ pStack) +{ + m_pSipSession = new PublicationSession(const_cast<SipStack*>(pStack->getWrappedStack())); +} + +rtPublicationSession::rtPublicationSession(SipStack* pStack, tsip_ssession_handle_t* pHandle) +{ + m_pSipSession = new PublicationSession(pStack, pHandle); +} + +rtPublicationSession::~rtPublicationSession() +{ + rtSafeDelete(m_pSipSession); +} + +#if COM_VISIBLE +bool rtPublicationSession::publish(String^ payload, rtActionConfig^ config) +{ + std::vector<char>_payload = rtString::toUtf8(payload); + return m_pSipSession->publish((const void*)_payload.data(), _payload.size(), config ? config->getWrappedActionConfig() : tsk_null); +} +bool rtPublicationSession::publish(Platform::String^ payload) +{ + return publish(payload, nullptr); +} +#else +bool rtPublicationSession::publish(Platform::IntPtr payload, unsigned len, rtActionConfig^ config) +{ + return m_pSipSession->publish((const void*)payload, len, config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtPublicationSession::publish(Platform::IntPtr payload, unsigned len) +{ + return publish(payload, len, nullptr); +} +#endif + +bool rtPublicationSession::unPublish(rtActionConfig^ config) +{ + return m_pSipSession->unPublish(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtPublicationSession::unPublish() +{ + return unPublish(nullptr); +} + + +/* ======================== rtRegistrationSession ========================*/ +rtISession_Implement(rtRegistrationSession); + +rtRegistrationSession::rtRegistrationSession(SipStack* pStack, tsip_ssession_handle_t* pHandle) +{ + m_pSipSession = new RegistrationSession(pStack, pHandle); +} + +rtRegistrationSession::rtRegistrationSession(rtSipStack^ pStack) +{ + m_pSipSession = new RegistrationSession(const_cast<SipStack*>(pStack->getWrappedStack())); +} + +rtRegistrationSession::~rtRegistrationSession() +{ + rtSafeDelete(m_pSipSession); +} + +bool rtRegistrationSession::register_(rtActionConfig^ config) +{ + return m_pSipSession->register_(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtRegistrationSession::register_() +{ + return register_(nullptr); +} + +bool rtRegistrationSession::unRegister(rtActionConfig^ config) +{ + return m_pSipSession->unRegister(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtRegistrationSession::unRegister() +{ + return unRegister(nullptr); +} + +bool rtRegistrationSession::accept(rtActionConfig^ config) +{ + return m_pSipSession->accept(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtRegistrationSession::accept() +{ + return accept(nullptr); +} + +bool rtRegistrationSession::reject(rtActionConfig^ config) +{ + return m_pSipSession->reject(config ? config->getWrappedActionConfig() : tsk_null); +} + +bool rtRegistrationSession::reject() +{ + return reject(nullptr); +} + + +/* ======================== rtSubscriptionSession ========================*/ +rtISession_Implement(rtSubscriptionSession); + +rtSubscriptionSession::rtSubscriptionSession(rtSipStack^ pStack) +{ + m_pSipSession = new SubscriptionSession(const_cast<SipStack*>(pStack->getWrappedStack())); +} + +rtSubscriptionSession::rtSubscriptionSession(SipStack* pStack, tsip_ssession_handle_t* pHandle) +{ + m_pSipSession = new SubscriptionSession(pStack, pHandle); +} + +rtSubscriptionSession::~rtSubscriptionSession() +{ + rtSafeDelete(m_pSipSession); +} + +bool rtSubscriptionSession::subscribe() +{ + return m_pSipSession->subscribe(); +} + +bool rtSubscriptionSession::unSubscribe() +{ + return m_pSipSession->unSubscribe(); +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/src/rt_SipStack.cxx b/bindings/winrt/doubango_rt/src/rt_SipStack.cxx new file mode 100644 index 0000000..753a881 --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_SipStack.cxx @@ -0,0 +1,390 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#include "rt_SipStack.h" +#include "rt_SipCallback.h" +#include "rt_DDebug.h" +#include "rt_String.h" +#include "rt_Enums.h" + +#include "SipStack.h" + + +using namespace doubango_rt::BackEnd; +using namespace Platform; +using namespace std; + +rtSipStack::rtSipStack(rtISipCallback^ callback, Platform::String^ realmUri, Platform::String^ impiString, Platform::String^ impuUri) +{ + m_pSipCallback = ref new rtSipCallback(callback); + m_pSipStack = new SipStack( + const_cast<SipCallback*>(m_pSipCallback->getWrappedCallback()), + rtString::toUtf8(realmUri).data(), + rtString::toUtf8(impiString).data(), + rtString::toUtf8(impuUri).data() + ); +} + +rtSipStack::~rtSipStack() +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + rtSafeDelete(m_pSipStack); + rtSafeDelete(m_pSipCallback); + rtSafeDelete(m_pDebugCallback); +} + +bool rtSipStack::start() +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->start(); +} + +bool rtSipStack::setDebugCallback(rtIDDebugCallback^ pCallback) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + m_pSipStack->setDebugCallback(tsk_null); + rtSafeDelete(m_pDebugCallback); + if(!pCallback) + { + return true; + } + + m_pDebugCallback = ref new rtDDebugCallback(pCallback); + return m_pSipStack->setDebugCallback(const_cast<DDebugCallback*>(m_pDebugCallback->getWrappedCallback())); +} + +bool rtSipStack::setDisplayName(Platform::String^ display_name) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setDisplayName(rtString::toUtf8(display_name).data()); +} + +bool rtSipStack::setRealm(Platform::String^ realm_uri) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setRealm(rtString::toUtf8(realm_uri).data()); +} + +bool rtSipStack::setIMPI(Platform::String^ impi) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setIMPI(rtString::toUtf8(impi).data()); +} + +bool rtSipStack::setIMPU(Platform::String^ impu_uri) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setIMPU(rtString::toUtf8(impu_uri).data()); +} + +bool rtSipStack::setPassword(Platform::String^ password) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setPassword(rtString::toUtf8(password).data()); +} + +bool rtSipStack::setAMF(Platform::String^ amf) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setAMF(rtString::toUtf8(amf).data()); +} + +bool rtSipStack::setOperatorId(Platform::String^ opid) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setOperatorId(rtString::toUtf8(opid).data()); +} + + +bool rtSipStack::setProxyCSCF(Platform::String^ fqdn, unsigned short port, Platform::String^ transport, Platform::String^ ipversion) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setProxyCSCF( + rtString::toUtf8(fqdn).data(), + port, + rtString::toUtf8(transport).data(), + rtString::toUtf8(ipversion).data() + ); +} +bool rtSipStack::setLocalIP(Platform::String^ ip, Platform::String^ transport) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setLocalIP(rtString::toUtf8(ip).data(), rtString::toUtf8(transport).data()); +} + +bool rtSipStack::setLocalIP(Platform::String^ ip) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setLocalIP(rtString::toUtf8(ip).data()); +} + +bool rtSipStack::setLocalPort(unsigned short port, Platform::String^ transport) +{ + return m_pSipStack->setLocalPort(port, rtString::toUtf8(transport).data()); +} + +bool rtSipStack::setLocalPort(unsigned short port) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setLocalPort(port); +} + +bool rtSipStack::setEarlyIMS(bool enabled) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setEarlyIMS(enabled); +} + +bool rtSipStack::addHeader(Platform::String^ name, Platform::String^ value) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->addHeader(rtString::toUtf8(name).data(), rtString::toUtf8(value).data()); +} + +bool rtSipStack::removeHeader(Platform::String^ name) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->removeHeader(rtString::toUtf8(name).data()); +} + +bool rtSipStack::addDnsServer(Platform::String^ ip) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->removeHeader(rtString::toUtf8(ip).data()); +} + +bool rtSipStack::setDnsDiscovery(bool enabled) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setDnsDiscovery(enabled); +} + +bool rtSipStack::setAoR(Platform::String^ ip, int port) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setAoR(rtString::toUtf8(ip).data(), port); +} + +bool rtSipStack::setSigCompParams(unsigned dms, unsigned sms, unsigned cpb, bool enablePresDict) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setSigCompParams(dms, sms, cpb, enablePresDict); +} + +bool rtSipStack::addSigCompCompartment(Platform::String^ compId) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->addSigCompCompartment(rtString::toUtf8(compId).data()); +} + +bool rtSipStack::removeSigCompCompartment(Platform::String^ compId) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->removeSigCompCompartment(rtString::toUtf8(compId).data()); +} + +bool rtSipStack::setSTUNServer(Platform::String^ ip, unsigned short port) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setSTUNServer(rtString::toUtf8(ip).data(), port); +} + +bool rtSipStack::setSTUNCred(Platform::String^ login, Platform::String^ password) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setSTUNCred(rtString::toUtf8(login).data(), rtString::toUtf8(password).data()); +} + +bool rtSipStack::setTLSSecAgree(bool enabled) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setTLSSecAgree(enabled); +} + +bool rtSipStack::setSSLCertificates(Platform::String^ privKey, Platform::String^ pubKey, Platform::String^ caKey, bool verify) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setSSLCertificates(rtString::toUtf8(privKey).data(), rtString::toUtf8(pubKey).data(), rtString::toUtf8(caKey).data(), verify); +} + +bool rtSipStack::setSSLCertificates(Platform::String^ privKey, Platform::String^ pubKey, Platform::String^ caKey) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return setSSLCertificates(privKey, pubKey, caKey, false); +} + +bool rtSipStack::setIPSecSecAgree(bool enabled) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setIPSecSecAgree(enabled); +} + +bool rtSipStack::setIPSecParameters(Platform::String^ algo, Platform::String^ ealgo, Platform::String^ mode, Platform::String^ proto) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->setIPSecParameters(rtString::toUtf8(algo).data(), rtString::toUtf8(ealgo).data(), rtString::toUtf8(mode).data(), rtString::toUtf8(proto).data()); +} + +Platform::String^ rtSipStack::dnsENUM(Platform::String^ service, Platform::String^ e164num, Platform::String^ domain) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return rtString::toString(m_pSipStack->dnsENUM(rtString::toUtf8(service).data(), rtString::toUtf8(e164num).data(), rtString::toUtf8(domain).data())); +} + +#if COM_VISIBLE +rtDnsResult^ rtSipStack::dnsNaptrSrv(String^ domain, String^ service) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + unsigned short _port = 0; + String^ address = rtString::toString(m_pSipStack->dnsNaptrSrv(rtString::toUtf8(domain).data(), rtString::toUtf8(service).data(), &_port)); + return ref new rtDnsResult(_port, address); +} + +rtDnsResult^ rtSipStack::dnsSrv(String^ service) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + unsigned short _port = 0; + String^ address = rtString::toString(m_pSipStack->dnsSrv(rtString::toUtf8(service).data(), &_port)); + return ref new rtDnsResult(_port, address); +} + +String^ rtSipStack::getLocalIP(String^ protocol) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + char* _ip = m_pSipStack->getLocalIPnPort(rtString::toUtf8(protocol).data(), tsk_null); + String^ ip = rtString::toString(_ip); + TSK_FREE(_ip); + return ip; +} + +uint16 rtSipStack::getLocalPort(String^ protocol) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + uint16 port = 0; + char* _ip = m_pSipStack->getLocalIPnPort(rtString::toUtf8(protocol).data(), &port); + TSK_FREE(_ip); + return port; +} +#else +String^ rtSipStack::dnsNaptrSrv(String^ domain, String^ service, IntPtr port) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return rtString::toString(m_pSipStack->dnsNaptrSrv(rtString::toUtf8(domain).data(), rtString::toUtf8(service).data(), ((unsigned short*)(void*)port))); +} + +String^ rtSipStack::dnsSrv(String^ service, IntPtr port) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return rtString::toString(m_pSipStack->dnsSrv(rtString::toUtf8(service).data(), ((unsigned short*)(void*)port))); +} + +Platform::String^ rtSipStack::getLocalIPnPort(String^ protocol, IntPtr port) +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + char* _ip = m_pSipStack->getLocalIPnPort(rtString::toUtf8(protocol).data(), ((unsigned short*)(void*)port)); + String^ ip = rtString::toString(); + TSK_FREE(_ip); + return ip; +} +#endif /* COM_VISIBLE */ + +Platform::String^ rtSipStack::getPreferredIdentity() +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return rtString::toString(m_pSipStack->getPreferredIdentity()); +} + +bool rtSipStack::isValid() +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->isValid(); +} + +bool rtSipStack::stop() +{ + std::lock_guard<std::recursive_mutex> lock(mLock); + + return m_pSipStack->stop(); +} + +bool rtSipStack::initialize() +{ + return SipStack::initialize(); +} + +bool rtSipStack::deInitialize() +{ + return SipStack::deInitialize(); +} + +void rtSipStack::setCodecs(enum class rt_tdav_codec_id_t codecs) +{ + return SipStack::setCodecs((tdav_codec_id_t) codecs); +} + +bool rtSipStack::setCodecPriority(enum class rt_tdav_codec_id_t codec_id, int priority) +{ + return SipStack::setCodecPriority((tdav_codec_id_t)codec_id, priority); +} + +bool rtSipStack::isCodecSupported(enum class rt_tdav_codec_id_t codec_id) +{ + return SipStack::isCodecSupported((tdav_codec_id_t) codec_id); +} + + + diff --git a/bindings/winrt/doubango_rt/src/rt_SipUri.cxx b/bindings/winrt/doubango_rt/src/rt_SipUri.cxx new file mode 100644 index 0000000..1398325 --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_SipUri.cxx @@ -0,0 +1,103 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#include "rt_SipUri.h" +#include "rt_String.h" + +#include "SipUri.h" + +using namespace doubango_rt::BackEnd; +using namespace Platform; +using namespace std; + + +rtSipUri::rtSipUri(Platform::String^ uriString, Platform::String^ displayName) +{ + m_pSipUri = new SipUri( + rtString::toUtf8(uriString).data(), + rtString::toUtf8(displayName).data()); +} + +rtSipUri::rtSipUri(Platform::String^ uriString) +{ + m_pSipUri = new SipUri(rtString::toUtf8(uriString).data()); +} + +rtSipUri::~rtSipUri() +{ + rtSafeDelete(m_pSipUri); +} + +bool rtSipUri::isValid(Platform::String^ uri) +{ + return SipUri::isValid(rtString::toUtf8(uri).data()); +} + +// MIDL4069: Static members and instance members cannot have the same name on a runtime class. isValid + +#if COM_VISIBLE +bool rtSipUri::isValid_() +#else +bool rtSipUri::isValid() +#endif +{ + return (m_pSipUri && m_pSipUri->isValid()); +} + +Platform::String^ rtSipUri::getScheme() +{ + return m_pSipUri ? rtString::toString(m_pSipUri->getScheme()) : nullptr; +} + +Platform::String^ rtSipUri::getHost() +{ + return m_pSipUri ? rtString::toString(m_pSipUri->getHost()) : nullptr; +} + +unsigned short rtSipUri::getPort() +{ + return m_pSipUri ? m_pSipUri->getPort() : 0; +} + +Platform::String^ rtSipUri::getUserName() +{ + return m_pSipUri ? rtString::toString(m_pSipUri->getUserName()) : nullptr; +} + +Platform::String^ rtSipUri::getPassword() +{ + return m_pSipUri ? rtString::toString(m_pSipUri->getPassword()) : nullptr; +} + +Platform::String^ rtSipUri::getDisplayName() +{ + return m_pSipUri ? rtString::toString(m_pSipUri->getDisplayName()) : nullptr; +} + +Platform::String^ rtSipUri::getParamValue(Platform::String^ name) +{ + return m_pSipUri ? rtString::toString(m_pSipUri->getParamValue(rtString::toUtf8(name).data())) : nullptr; +} + +void rtSipUri::setDisplayName(Platform::String^ displayName) +{ + if(m_pSipUri) + { + m_pSipUri->setDisplayName(rtString::toUtf8(displayName).data()); + } +} + diff --git a/bindings/winrt/doubango_rt/src/rt_String.cxx b/bindings/winrt/doubango_rt/src/rt_String.cxx new file mode 100644 index 0000000..7d17f03 --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_String.cxx @@ -0,0 +1,58 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/ +#include "rt_String.h" + +#include <Windows.h> + +using namespace doubango_rt::BackEnd; +using namespace Platform; +using namespace std; + +vector<char> rtString::toUtf8(String^ str) +{ + if(str != nullptr && !str->IsEmpty()) + { + int len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, str->Data(), str->Length(), nullptr, 0, nullptr, nullptr); + if (len > 0) + { + vector<char> vec(len + 1); + if (WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, str->Data(), str->Length(), vec.data(), len, nullptr, nullptr) == len) + { + return std::move(vec); + } + } + } + return std::move(vector<char>(0)); +} + +String^ rtString::toString(char const* str) +{ + if(str) + { + int len = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str, -1, nullptr, 0); + if (len > 0) + { + vector<wchar_t> vec(len); + if (MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, str, -1, vec.data(), len) == len) + { + return ref new String(vec.data()); + } + } + } + return nullptr; +}
\ No newline at end of file diff --git a/bindings/winrt/doubango_rt/src/rt_Xcap.cxx b/bindings/winrt/doubango_rt/src/rt_Xcap.cxx new file mode 100644 index 0000000..623cb1f --- /dev/null +++ b/bindings/winrt/doubango_rt/src/rt_Xcap.cxx @@ -0,0 +1,17 @@ +/*Copyright (C) 2013 Doubango Telecom <http://www.doubango.org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +*/
\ No newline at end of file diff --git a/bindings/winrt/tinyWRAP.sln b/bindings/winrt/tinyWRAP.sln new file mode 100644 index 0000000..26d35ab --- /dev/null +++ b/bindings/winrt/tinyWRAP.sln @@ -0,0 +1,229 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 2012 for Windows Phone +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyWRAP", "tinyWRAP.vcxproj", "{5004BA7E-950D-4D60-A030-29ACD38DCA08}" + ProjectSection(ProjectDependencies) = postProject + {1137A808-DAC8-4AF7-B8BB-AEE8ABFF2F67} = {1137A808-DAC8-4AF7-B8BB-AEE8ABFF2F67} + {BE41D117-1D61-4C12-AD9D-B20D02C79687} = {BE41D117-1D61-4C12-AD9D-B20D02C79687} + {1A27423C-6535-4A49-96EC-5D209FE125F2} = {1A27423C-6535-4A49-96EC-5D209FE125F2} + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + {77A24977-079C-4E02-9717-8B2F684BAA21} = {77A24977-079C-4E02-9717-8B2F684BAA21} + {49843B78-0CEB-445D-BACC-C5C5C2F6C26F} = {49843B78-0CEB-445D-BACC-C5C5C2F6C26F} + {982D737A-0649-4C32-A00E-08992A0B7673} = {982D737A-0649-4C32-A00E-08992A0B7673} + {0875A083-5118-40CC-941E-722B00295A5B} = {0875A083-5118-40CC-941E-722B00295A5B} + {0F2C458A-1EDB-4E09-9A22-C2209731CFF2} = {0F2C458A-1EDB-4E09-9A22-C2209731CFF2} + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} = {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} + {F623CBDB-707A-4FDC-ACE0-3D616E239F16} = {F623CBDB-707A-4FDC-ACE0-3D616E239F16} + {52E43EEB-A549-4159-B254-DCA225D7638B} = {52E43EEB-A549-4159-B254-DCA225D7638B} + {65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC} = {65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyDAV", "..\..\tinyDAV\winrt\tinyDAV.vcxproj", "{0F2C458A-1EDB-4E09-9A22-C2209731CFF2}" + ProjectSection(ProjectDependencies) = postProject + {BE41D117-1D61-4C12-AD9D-B20D02C79687} = {BE41D117-1D61-4C12-AD9D-B20D02C79687} + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + {77A24977-079C-4E02-9717-8B2F684BAA21} = {77A24977-079C-4E02-9717-8B2F684BAA21} + {982D737A-0649-4C32-A00E-08992A0B7673} = {982D737A-0649-4C32-A00E-08992A0B7673} + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} = {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} + {52E43EEB-A549-4159-B254-DCA225D7638B} = {52E43EEB-A549-4159-B254-DCA225D7638B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyHTTP", "..\..\tinyHTTP\winrt\tinyHTTP.vcxproj", "{1A27423C-6535-4A49-96EC-5D209FE125F2}" + ProjectSection(ProjectDependencies) = postProject + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} = {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyIPSec", "..\..\tinyIPSec\winrt\tinyIPSec.vcxproj", "{0875A083-5118-40CC-941E-722B00295A5B}" + ProjectSection(ProjectDependencies) = postProject + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyMEDIA", "..\..\tinyMEDIA\winrt\tinyMEDIA.vcxproj", "{52E43EEB-A549-4159-B254-DCA225D7638B}" + ProjectSection(ProjectDependencies) = postProject + {BE41D117-1D61-4C12-AD9D-B20D02C79687} = {BE41D117-1D61-4C12-AD9D-B20D02C79687} + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + {982D737A-0649-4C32-A00E-08992A0B7673} = {982D737A-0649-4C32-A00E-08992A0B7673} + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} = {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyMSRP", "..\..\tinyMSRP\winrt\tinyMSRP.vcxproj", "{BE41D117-1D61-4C12-AD9D-B20D02C79687}" + ProjectSection(ProjectDependencies) = postProject + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} = {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyNET", "..\..\tinyNET\winrt\tinyNET.vcxproj", "{06E58F9D-28A1-4DD4-AF11-2F5239222CCC}" + ProjectSection(ProjectDependencies) = postProject + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyRTP", "..\..\tinyRTP\winrt\tinyRTP.vcxproj", "{77A24977-079C-4E02-9717-8B2F684BAA21}" + ProjectSection(ProjectDependencies) = postProject + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} = {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} + {52E43EEB-A549-4159-B254-DCA225D7638B} = {52E43EEB-A549-4159-B254-DCA225D7638B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinySAK", "..\..\tinySAK\winrt\tinySAK.vcxproj", "{19279F5B-CDAF-4187-9F09-2A896A828B05}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinySDP", "..\..\tinySDP\winrt\tinySDP.vcxproj", "{982D737A-0649-4C32-A00E-08992A0B7673}" + ProjectSection(ProjectDependencies) = postProject + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinySIGCOMP", "..\..\tinySIGCOMP\winrt\tinySIGCOMP.vcxproj", "{F623CBDB-707A-4FDC-ACE0-3D616E239F16}" + ProjectSection(ProjectDependencies) = postProject + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinySIP", "..\..\tinySIP\winrt\tinySIP.vcxproj", "{1137A808-DAC8-4AF7-B8BB-AEE8ABFF2F67}" + ProjectSection(ProjectDependencies) = postProject + {BE41D117-1D61-4C12-AD9D-B20D02C79687} = {BE41D117-1D61-4C12-AD9D-B20D02C79687} + {1A27423C-6535-4A49-96EC-5D209FE125F2} = {1A27423C-6535-4A49-96EC-5D209FE125F2} + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + {982D737A-0649-4C32-A00E-08992A0B7673} = {982D737A-0649-4C32-A00E-08992A0B7673} + {0875A083-5118-40CC-941E-722B00295A5B} = {0875A083-5118-40CC-941E-722B00295A5B} + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} = {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} + {F623CBDB-707A-4FDC-ACE0-3D616E239F16} = {F623CBDB-707A-4FDC-ACE0-3D616E239F16} + {52E43EEB-A549-4159-B254-DCA225D7638B} = {52E43EEB-A549-4159-B254-DCA225D7638B} + {65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC} = {65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinySMS", "..\..\tinySMS\winrt\tinySMS.vcxproj", "{65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC}" + ProjectSection(ProjectDependencies) = postProject + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyXCAP", "..\..\tinyXCAP\winrt\tinyXCAP.vcxproj", "{49843B78-0CEB-445D-BACC-C5C5C2F6C26F}" + ProjectSection(ProjectDependencies) = postProject + {1A27423C-6535-4A49-96EC-5D209FE125F2} = {1A27423C-6535-4A49-96EC-5D209FE125F2} + {19279F5B-CDAF-4187-9F09-2A896A828B05} = {19279F5B-CDAF-4187-9F09-2A896A828B05} + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} = {06E58F9D-28A1-4DD4-AF11-2F5239222CCC} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|Win32 = Debug|Win32 + Release|ARM = Release|ARM + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5004BA7E-950D-4D60-A030-29ACD38DCA08}.Debug|ARM.ActiveCfg = Debug|ARM + {5004BA7E-950D-4D60-A030-29ACD38DCA08}.Debug|ARM.Build.0 = Debug|ARM + {5004BA7E-950D-4D60-A030-29ACD38DCA08}.Debug|Win32.ActiveCfg = Debug|Win32 + {5004BA7E-950D-4D60-A030-29ACD38DCA08}.Debug|Win32.Build.0 = Debug|Win32 + {5004BA7E-950D-4D60-A030-29ACD38DCA08}.Release|ARM.ActiveCfg = Release|ARM + {5004BA7E-950D-4D60-A030-29ACD38DCA08}.Release|ARM.Build.0 = Release|ARM + {5004BA7E-950D-4D60-A030-29ACD38DCA08}.Release|Win32.ActiveCfg = Release|Win32 + {5004BA7E-950D-4D60-A030-29ACD38DCA08}.Release|Win32.Build.0 = Release|Win32 + {0F2C458A-1EDB-4E09-9A22-C2209731CFF2}.Debug|ARM.ActiveCfg = Debug|ARM + {0F2C458A-1EDB-4E09-9A22-C2209731CFF2}.Debug|ARM.Build.0 = Debug|ARM + {0F2C458A-1EDB-4E09-9A22-C2209731CFF2}.Debug|Win32.ActiveCfg = Debug|Win32 + {0F2C458A-1EDB-4E09-9A22-C2209731CFF2}.Debug|Win32.Build.0 = Debug|Win32 + {0F2C458A-1EDB-4E09-9A22-C2209731CFF2}.Release|ARM.ActiveCfg = Release|ARM + {0F2C458A-1EDB-4E09-9A22-C2209731CFF2}.Release|ARM.Build.0 = Release|ARM + {0F2C458A-1EDB-4E09-9A22-C2209731CFF2}.Release|Win32.ActiveCfg = Release|Win32 + {0F2C458A-1EDB-4E09-9A22-C2209731CFF2}.Release|Win32.Build.0 = Release|Win32 + {1A27423C-6535-4A49-96EC-5D209FE125F2}.Debug|ARM.ActiveCfg = Debug|ARM + {1A27423C-6535-4A49-96EC-5D209FE125F2}.Debug|ARM.Build.0 = Debug|ARM + {1A27423C-6535-4A49-96EC-5D209FE125F2}.Debug|Win32.ActiveCfg = Debug|Win32 + {1A27423C-6535-4A49-96EC-5D209FE125F2}.Debug|Win32.Build.0 = Debug|Win32 + {1A27423C-6535-4A49-96EC-5D209FE125F2}.Release|ARM.ActiveCfg = Release|ARM + {1A27423C-6535-4A49-96EC-5D209FE125F2}.Release|ARM.Build.0 = Release|ARM + {1A27423C-6535-4A49-96EC-5D209FE125F2}.Release|Win32.ActiveCfg = Release|Win32 + {1A27423C-6535-4A49-96EC-5D209FE125F2}.Release|Win32.Build.0 = Release|Win32 + {0875A083-5118-40CC-941E-722B00295A5B}.Debug|ARM.ActiveCfg = Debug|ARM + {0875A083-5118-40CC-941E-722B00295A5B}.Debug|ARM.Build.0 = Debug|ARM + {0875A083-5118-40CC-941E-722B00295A5B}.Debug|Win32.ActiveCfg = Debug|Win32 + {0875A083-5118-40CC-941E-722B00295A5B}.Debug|Win32.Build.0 = Debug|Win32 + {0875A083-5118-40CC-941E-722B00295A5B}.Release|ARM.ActiveCfg = Release|ARM + {0875A083-5118-40CC-941E-722B00295A5B}.Release|ARM.Build.0 = Release|ARM + {0875A083-5118-40CC-941E-722B00295A5B}.Release|Win32.ActiveCfg = Release|Win32 + {0875A083-5118-40CC-941E-722B00295A5B}.Release|Win32.Build.0 = Release|Win32 + {52E43EEB-A549-4159-B254-DCA225D7638B}.Debug|ARM.ActiveCfg = Debug|ARM + {52E43EEB-A549-4159-B254-DCA225D7638B}.Debug|ARM.Build.0 = Debug|ARM + {52E43EEB-A549-4159-B254-DCA225D7638B}.Debug|Win32.ActiveCfg = Debug|Win32 + {52E43EEB-A549-4159-B254-DCA225D7638B}.Debug|Win32.Build.0 = Debug|Win32 + {52E43EEB-A549-4159-B254-DCA225D7638B}.Release|ARM.ActiveCfg = Release|ARM + {52E43EEB-A549-4159-B254-DCA225D7638B}.Release|ARM.Build.0 = Release|ARM + {52E43EEB-A549-4159-B254-DCA225D7638B}.Release|Win32.ActiveCfg = Release|Win32 + {52E43EEB-A549-4159-B254-DCA225D7638B}.Release|Win32.Build.0 = Release|Win32 + {BE41D117-1D61-4C12-AD9D-B20D02C79687}.Debug|ARM.ActiveCfg = Debug|ARM + {BE41D117-1D61-4C12-AD9D-B20D02C79687}.Debug|ARM.Build.0 = Debug|ARM + {BE41D117-1D61-4C12-AD9D-B20D02C79687}.Debug|Win32.ActiveCfg = Debug|Win32 + {BE41D117-1D61-4C12-AD9D-B20D02C79687}.Debug|Win32.Build.0 = Debug|Win32 + {BE41D117-1D61-4C12-AD9D-B20D02C79687}.Release|ARM.ActiveCfg = Release|ARM + {BE41D117-1D61-4C12-AD9D-B20D02C79687}.Release|ARM.Build.0 = Release|ARM + {BE41D117-1D61-4C12-AD9D-B20D02C79687}.Release|Win32.ActiveCfg = Release|Win32 + {BE41D117-1D61-4C12-AD9D-B20D02C79687}.Release|Win32.Build.0 = Release|Win32 + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC}.Debug|ARM.ActiveCfg = Debug|ARM + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC}.Debug|ARM.Build.0 = Debug|ARM + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC}.Debug|Win32.ActiveCfg = Debug|Win32 + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC}.Debug|Win32.Build.0 = Debug|Win32 + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC}.Release|ARM.ActiveCfg = Release|ARM + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC}.Release|ARM.Build.0 = Release|ARM + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC}.Release|Win32.ActiveCfg = Release|Win32 + {06E58F9D-28A1-4DD4-AF11-2F5239222CCC}.Release|Win32.Build.0 = Release|Win32 + {77A24977-079C-4E02-9717-8B2F684BAA21}.Debug|ARM.ActiveCfg = Debug|ARM + {77A24977-079C-4E02-9717-8B2F684BAA21}.Debug|ARM.Build.0 = Debug|ARM + {77A24977-079C-4E02-9717-8B2F684BAA21}.Debug|Win32.ActiveCfg = Debug|Win32 + {77A24977-079C-4E02-9717-8B2F684BAA21}.Debug|Win32.Build.0 = Debug|Win32 + {77A24977-079C-4E02-9717-8B2F684BAA21}.Release|ARM.ActiveCfg = Release|ARM + {77A24977-079C-4E02-9717-8B2F684BAA21}.Release|ARM.Build.0 = Release|ARM + {77A24977-079C-4E02-9717-8B2F684BAA21}.Release|Win32.ActiveCfg = Release|Win32 + {77A24977-079C-4E02-9717-8B2F684BAA21}.Release|Win32.Build.0 = Release|Win32 + {19279F5B-CDAF-4187-9F09-2A896A828B05}.Debug|ARM.ActiveCfg = Debug|ARM + {19279F5B-CDAF-4187-9F09-2A896A828B05}.Debug|ARM.Build.0 = Debug|ARM + {19279F5B-CDAF-4187-9F09-2A896A828B05}.Debug|Win32.ActiveCfg = Debug|Win32 + {19279F5B-CDAF-4187-9F09-2A896A828B05}.Debug|Win32.Build.0 = Debug|Win32 + {19279F5B-CDAF-4187-9F09-2A896A828B05}.Release|ARM.ActiveCfg = Release|ARM + {19279F5B-CDAF-4187-9F09-2A896A828B05}.Release|ARM.Build.0 = Release|ARM + {19279F5B-CDAF-4187-9F09-2A896A828B05}.Release|Win32.ActiveCfg = Release|Win32 + {19279F5B-CDAF-4187-9F09-2A896A828B05}.Release|Win32.Build.0 = Release|Win32 + {982D737A-0649-4C32-A00E-08992A0B7673}.Debug|ARM.ActiveCfg = Debug|ARM + {982D737A-0649-4C32-A00E-08992A0B7673}.Debug|ARM.Build.0 = Debug|ARM + {982D737A-0649-4C32-A00E-08992A0B7673}.Debug|Win32.ActiveCfg = Debug|Win32 + {982D737A-0649-4C32-A00E-08992A0B7673}.Debug|Win32.Build.0 = Debug|Win32 + {982D737A-0649-4C32-A00E-08992A0B7673}.Release|ARM.ActiveCfg = Release|ARM + {982D737A-0649-4C32-A00E-08992A0B7673}.Release|ARM.Build.0 = Release|ARM + {982D737A-0649-4C32-A00E-08992A0B7673}.Release|Win32.ActiveCfg = Release|Win32 + {982D737A-0649-4C32-A00E-08992A0B7673}.Release|Win32.Build.0 = Release|Win32 + {F623CBDB-707A-4FDC-ACE0-3D616E239F16}.Debug|ARM.ActiveCfg = Debug|ARM + {F623CBDB-707A-4FDC-ACE0-3D616E239F16}.Debug|ARM.Build.0 = Debug|ARM + {F623CBDB-707A-4FDC-ACE0-3D616E239F16}.Debug|Win32.ActiveCfg = Debug|Win32 + {F623CBDB-707A-4FDC-ACE0-3D616E239F16}.Debug|Win32.Build.0 = Debug|Win32 + {F623CBDB-707A-4FDC-ACE0-3D616E239F16}.Release|ARM.ActiveCfg = Release|ARM + {F623CBDB-707A-4FDC-ACE0-3D616E239F16}.Release|ARM.Build.0 = Release|ARM + {F623CBDB-707A-4FDC-ACE0-3D616E239F16}.Release|Win32.ActiveCfg = Release|Win32 + {F623CBDB-707A-4FDC-ACE0-3D616E239F16}.Release|Win32.Build.0 = Release|Win32 + {1137A808-DAC8-4AF7-B8BB-AEE8ABFF2F67}.Debug|ARM.ActiveCfg = Debug|ARM + {1137A808-DAC8-4AF7-B8BB-AEE8ABFF2F67}.Debug|ARM.Build.0 = Debug|ARM + {1137A808-DAC8-4AF7-B8BB-AEE8ABFF2F67}.Debug|Win32.ActiveCfg = Debug|Win32 + {1137A808-DAC8-4AF7-B8BB-AEE8ABFF2F67}.Debug|Win32.Build.0 = Debug|Win32 + {1137A808-DAC8-4AF7-B8BB-AEE8ABFF2F67}.Release|ARM.ActiveCfg = Release|ARM + {1137A808-DAC8-4AF7-B8BB-AEE8ABFF2F67}.Release|ARM.Build.0 = Release|ARM + {1137A808-DAC8-4AF7-B8BB-AEE8ABFF2F67}.Release|Win32.ActiveCfg = Release|Win32 + {1137A808-DAC8-4AF7-B8BB-AEE8ABFF2F67}.Release|Win32.Build.0 = Release|Win32 + {65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC}.Debug|ARM.ActiveCfg = Debug|ARM + {65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC}.Debug|ARM.Build.0 = Debug|ARM + {65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC}.Debug|Win32.ActiveCfg = Debug|Win32 + {65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC}.Debug|Win32.Build.0 = Debug|Win32 + {65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC}.Release|ARM.ActiveCfg = Release|ARM + {65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC}.Release|ARM.Build.0 = Release|ARM + {65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC}.Release|Win32.ActiveCfg = Release|Win32 + {65CDF0FF-3B84-45F3-9BB6-468C79B8E0BC}.Release|Win32.Build.0 = Release|Win32 + {49843B78-0CEB-445D-BACC-C5C5C2F6C26F}.Debug|ARM.ActiveCfg = Debug|ARM + {49843B78-0CEB-445D-BACC-C5C5C2F6C26F}.Debug|ARM.Build.0 = Debug|ARM + {49843B78-0CEB-445D-BACC-C5C5C2F6C26F}.Debug|Win32.ActiveCfg = Debug|Win32 + {49843B78-0CEB-445D-BACC-C5C5C2F6C26F}.Debug|Win32.Build.0 = Debug|Win32 + {49843B78-0CEB-445D-BACC-C5C5C2F6C26F}.Release|ARM.ActiveCfg = Release|ARM + {49843B78-0CEB-445D-BACC-C5C5C2F6C26F}.Release|ARM.Build.0 = Release|ARM + {49843B78-0CEB-445D-BACC-C5C5C2F6C26F}.Release|Win32.ActiveCfg = Release|Win32 + {49843B78-0CEB-445D-BACC-C5C5C2F6C26F}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/bindings/winrt/tinyWRAP.vcxproj b/bindings/winrt/tinyWRAP.vcxproj new file mode 100644 index 0000000..161f6ac --- /dev/null +++ b/bindings/winrt/tinyWRAP.vcxproj @@ -0,0 +1,204 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Debug|ARM"> + <Configuration>Debug</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|ARM"> + <Configuration>Release</Configuration> + <Platform>ARM</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{5004ba7e-950d-4d60-a030-29acd38dca08}</ProjectGuid> + <RootNamespace>tinyWRAP</RootNamespace> + <DefaultLanguage>en-US</DefaultLanguage> + <MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110_wp80</PlatformToolset> + <IgnoreImportLibrary>false</IgnoreImportLibrary> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v110_wp80</PlatformToolset> + <IgnoreImportLibrary>false</IgnoreImportLibrary> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110_wp80</PlatformToolset> + <IgnoreImportLibrary>false</IgnoreImportLibrary> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration"> + <ConfigurationType>DynamicLibrary</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <WholeProgramOptimization>true</WholeProgramOptimization> + <PlatformToolset>v110_wp80</PlatformToolset> + <IgnoreImportLibrary>false</IgnoreImportLibrary> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <GenerateManifest>false</GenerateManifest> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <OutDir>$(SolutionDir)$(Configuration)\$(MSBuildProjectName)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <OutDir>$(SolutionDir)$(Configuration)\$(MSBuildProjectName)\</OutDir> + <IntDir>$(Platform)\$(Configuration)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <OutDir>$(SolutionDir)$(Configuration)\$(MSBuildProjectName)\</OutDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <OutDir>$(SolutionDir)$(Configuration)\$(MSBuildProjectName)\</OutDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PreprocessorDefinitions>_USRDLL;TINYWRAP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <PrecompiledHeaderFile> + </PrecompiledHeaderFile> + <CompileAsWinRT>false</CompileAsWinRT> + <AdditionalUsingDirectories>$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <AdditionalIncludeDirectories>..\_common;..\.;..\..\thirdparties\winrt\include;..\..\tinySAK\src;..\..\tinyNET\src;..\..\tinyHTTP\include;..\..\tinySIP\include;..\..\tinyDAV\include;..\..\tinySDP\include;..\..\tinyMEDIA\include;..\..\tinyXCAP\include;..\..\tinySMS\include;..\..\tinyMSRP\include</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + <GenerateDebugInformation>true</GenerateDebugInformation> + <AdditionalDependencies>"$(SolutionDir)$(Configuration)\tinySAK\tinySAK.lib";"$(SolutionDir)$(Configuration)\tinySIP\tinySIP.lib";"$(SolutionDir)$(Configuration)\tinyNET\tinyNET.lib";"$(SolutionDir)$(Configuration)\tinyDAV\tinyDAV.lib";"$(SolutionDir)$(Configuration)\tinyMEDIA\tinyMEDIA.lib";"$(SolutionDir)$(Configuration)\tinyHTTP\tinyHTTP.lib";"$(SolutionDir)$(Configuration)\tinyXCAP\tinyXCAP.lib";"$(SolutionDir)$(Configuration)\tinySMS\tinySMS.lib";"$(SolutionDir)$(Configuration)\tinyMSRP\tinyMSRP.lib";"$(SolutionDir)$(Configuration)\tinySDP\tinySDP.lib"</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <PreprocessorDefinitions>_USRDLL;TINYWRAP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <PrecompiledHeaderFile> + </PrecompiledHeaderFile> + <CompileAsWinRT>false</CompileAsWinRT> + <AdditionalUsingDirectories>$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <AdditionalIncludeDirectories>..\_common;..\.;..\..\thirdparties\winrt\include;..\..\tinySAK\src;..\..\tinyNET\src;..\..\tinyHTTP\include;..\..\tinySIP\include;..\..\tinyDAV\include;..\..\tinySDP\include;..\..\tinyMEDIA\include;..\..\tinyXCAP\include;..\..\tinySMS\include;..\..\tinyMSRP\include</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + <GenerateDebugInformation>true</GenerateDebugInformation> + <AdditionalDependencies>"$(SolutionDir)$(Configuration)\tinySAK\tinySAK.lib";"$(SolutionDir)$(Configuration)\tinySIP\tinySIP.lib";"$(SolutionDir)$(Configuration)\tinyNET\tinyNET.lib";"$(SolutionDir)$(Configuration)\tinyDAV\tinyDAV.lib";"$(SolutionDir)$(Configuration)\tinyMEDIA\tinyMEDIA.lib";"$(SolutionDir)$(Configuration)\tinyHTTP\tinyHTTP.lib";"$(SolutionDir)$(Configuration)\tinyXCAP\tinyXCAP.lib";"$(SolutionDir)$(Configuration)\tinySMS\tinySMS.lib";"$(SolutionDir)$(Configuration)\tinyMSRP\tinyMSRP.lib";"$(SolutionDir)$(Configuration)\tinySDP\tinySDP.lib"</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'"> + <ClCompile> + <PreprocessorDefinitions>_USRDLL;TINYWRAP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <PrecompiledHeaderFile> + </PrecompiledHeaderFile> + <CompileAsWinRT>false</CompileAsWinRT> + <AdditionalUsingDirectories>$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <AdditionalIncludeDirectories>..\_common;..\.;..\..\thirdparties\winrt\include;..\..\tinySAK\src;..\..\tinyNET\src;..\..\tinyHTTP\include;..\..\tinySIP\include;..\..\tinyDAV\include;..\..\tinySDP\include;..\..\tinyMEDIA\include;..\..\tinyXCAP\include;..\..\tinySMS\include;..\..\tinyMSRP\include</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + <GenerateDebugInformation>true</GenerateDebugInformation> + <AdditionalDependencies>"$(SolutionDir)$(Configuration)\tinySAK\tinySAK.lib";"$(SolutionDir)$(Configuration)\tinySIP\tinySIP.lib";"$(SolutionDir)$(Configuration)\tinyNET\tinyNET.lib";"$(SolutionDir)$(Configuration)\tinyDAV\tinyDAV.lib";"$(SolutionDir)$(Configuration)\tinyMEDIA\tinyMEDIA.lib";"$(SolutionDir)$(Configuration)\tinyHTTP\tinyHTTP.lib";"$(SolutionDir)$(Configuration)\tinyXCAP\tinyXCAP.lib";"$(SolutionDir)$(Configuration)\tinySMS\tinySMS.lib";"$(SolutionDir)$(Configuration)\tinyMSRP\tinyMSRP.lib";"$(SolutionDir)$(Configuration)\tinySDP\tinySDP.lib"</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> + <ClCompile> + <PreprocessorDefinitions>_USRDLL;TINYWRAP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <PrecompiledHeader>NotUsing</PrecompiledHeader> + <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> + <CompileAsWinRT>false</CompileAsWinRT> + <AdditionalUsingDirectories>$(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories)</AdditionalUsingDirectories> + <AdditionalIncludeDirectories>..\_common;..\.;..\..\thirdparties\winrt\include;..\..\tinySAK\src;..\..\tinyNET\src;..\..\tinyHTTP\include;..\..\tinySIP\include;..\..\tinyDAV\include;..\..\tinySDP\include;..\..\tinyMEDIA\include;..\..\tinyXCAP\include;..\..\tinySMS\include;..\..\tinyMSRP\include</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> + <GenerateWindowsMetadata>false</GenerateWindowsMetadata> + <GenerateDebugInformation>true</GenerateDebugInformation> + <AdditionalDependencies>"$(SolutionDir)$(Configuration)\tinySAK\tinySAK.lib";"$(SolutionDir)$(Configuration)\tinySIP\tinySIP.lib";"$(SolutionDir)$(Configuration)\tinyNET\tinyNET.lib";"$(SolutionDir)$(Configuration)\tinyDAV\tinyDAV.lib";"$(SolutionDir)$(Configuration)\tinyMEDIA\tinyMEDIA.lib";"$(SolutionDir)$(Configuration)\tinyHTTP\tinyHTTP.lib";"$(SolutionDir)$(Configuration)\tinyXCAP\tinyXCAP.lib";"$(SolutionDir)$(Configuration)\tinySMS\tinySMS.lib";"$(SolutionDir)$(Configuration)\tinyMSRP\tinyMSRP.lib";"$(SolutionDir)$(Configuration)\tinySDP\tinySDP.lib"</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <Reference Include="Windows"> + <IsWinMDFile>true</IsWinMDFile> + </Reference> + <Reference Include="platform.winmd"> + <IsWinMDFile>true</IsWinMDFile> + <Private>false</Private> + </Reference> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\csharp\tinyWRAP_wrap.h" /> + <ClInclude Include="..\_common\ActionConfig.h" /> + <ClInclude Include="..\_common\AudioResampler.h" /> + <ClInclude Include="..\_common\Common.h" /> + <ClInclude Include="..\_common\DDebug.h" /> + <ClInclude Include="..\_common\MediaContent.h" /> + <ClInclude Include="..\_common\MediaSessionMgr.h" /> + <ClInclude Include="..\_common\Msrp.h" /> + <ClInclude Include="..\_common\ProxyConsumer.h" /> + <ClInclude Include="..\_common\ProxyPluginMgr.h" /> + <ClInclude Include="..\_common\ProxyProducer.h" /> + <ClInclude Include="..\_common\SafeObject.h" /> + <ClInclude Include="..\_common\SipCallback.h" /> + <ClInclude Include="..\_common\SipEvent.h" /> + <ClInclude Include="..\_common\SipMessage.h" /> + <ClInclude Include="..\_common\SipSession.h" /> + <ClInclude Include="..\_common\SipStack.h" /> + <ClInclude Include="..\_common\SipUri.h" /> + <ClInclude Include="..\_common\SMSEncoder.h" /> + <ClInclude Include="..\_common\tinyWRAP_config.h" /> + <ClInclude Include="..\_common\Xcap.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\csharp\tinyWRAP_wrap.cxx" /> + <ClCompile Include="..\_common\ActionConfig.cxx" /> + <ClCompile Include="..\_common\AudioResampler.cxx" /> + <ClCompile Include="..\_common\DDebug.cxx" /> + <ClCompile Include="..\_common\MediaContent.cxx" /> + <ClCompile Include="..\_common\MediaSessionMgr.cxx" /> + <ClCompile Include="..\_common\Msrp.cxx" /> + <ClCompile Include="..\_common\ProxyConsumer.cxx" /> + <ClCompile Include="..\_common\ProxyPluginMgr.cxx" /> + <ClCompile Include="..\_common\ProxyProducer.cxx" /> + <ClCompile Include="..\_common\SafeObject.cxx" /> + <ClCompile Include="..\_common\SipCallback.cxx" /> + <ClCompile Include="..\_common\SipEvent.cxx" /> + <ClCompile Include="..\_common\SipMessage.cxx" /> + <ClCompile Include="..\_common\SipSession.cxx" /> + <ClCompile Include="..\_common\SipStack.cxx" /> + <ClCompile Include="..\_common\SipUri.cxx" /> + <ClCompile Include="..\_common\SMSEncoder.cxx" /> + <ClCompile Include="..\_common\Xcap.cxx" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsPhone\v$(TargetPlatformVersion)\Microsoft.Cpp.WindowsPhone.$(TargetPlatformVersion).targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project>
\ No newline at end of file diff --git a/bindings/winrt/tinyWRAP.vcxproj.filters b/bindings/winrt/tinyWRAP.vcxproj.filters new file mode 100644 index 0000000..a3be7bb --- /dev/null +++ b/bindings/winrt/tinyWRAP.vcxproj.filters @@ -0,0 +1,139 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Resource Files"> + <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> + <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> + </Filter> + <Filter Include="include"> + <UniqueIdentifier>{a58a2275-bd4d-4d21-98b1-e3729f6e71ef}</UniqueIdentifier> + </Filter> + <Filter Include="src"> + <UniqueIdentifier>{1c6acf3c-a6a2-4eea-9828-1b02bf401bb7}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\_common\ActionConfig.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\AudioResampler.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\Common.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\DDebug.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\MediaContent.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\MediaSessionMgr.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\Msrp.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\ProxyConsumer.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\ProxyPluginMgr.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\ProxyProducer.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\SafeObject.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\SipCallback.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\SipEvent.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\SipMessage.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\SipSession.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\SipStack.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\SipUri.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\SMSEncoder.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\tinyWRAP_config.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\_common\Xcap.h"> + <Filter>include</Filter> + </ClInclude> + <ClInclude Include="..\csharp\tinyWRAP_wrap.h"> + <Filter>include</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\_common\ActionConfig.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\AudioResampler.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\DDebug.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\MediaContent.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\MediaSessionMgr.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\Msrp.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\ProxyConsumer.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\ProxyPluginMgr.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\ProxyProducer.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\SafeObject.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\SipCallback.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\SipEvent.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\SipMessage.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\SipSession.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\SipStack.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\SipUri.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\SMSEncoder.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\_common\Xcap.cxx"> + <Filter>src</Filter> + </ClCompile> + <ClCompile Include="..\csharp\tinyWRAP_wrap.cxx"> + <Filter>src</Filter> + </ClCompile> + </ItemGroup> +</Project>
\ No newline at end of file |