diff options
author | Henri Herscher <henri@oreka.org> | 2007-06-25 19:22:12 +0000 |
---|---|---|
committer | Henri Herscher <henri@oreka.org> | 2007-06-25 19:22:12 +0000 |
commit | 1b42814d7ab545334fa97982b1b3023731a0cd64 (patch) | |
tree | 2b297edfc35e6632d3ce181792bdb43b46d529ed /orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp | |
parent | 0ae3f2872bd27751d52b78ecc693232c15fe999f (diff) |
Added support for capturing audio from any Sangoma telephony board (Sangoma driver needs to be capable of generating RTP copy of voice traffic).
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@451 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp')
-rw-r--r-- | orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp b/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp index a079cd6..80aff5d 100644 --- a/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp +++ b/orkaudio/audiocaptureplugins/voip/VoIpConfig.cpp @@ -45,6 +45,10 @@ VoIpConfig::VoIpConfig() m_skinnyIgnoreOpenReceiveChannelAck = false; m_skinnyDynamicMediaAddress = false; m_skinnyAllowCallInfoUpdate = false; + + m_sangomaEnable = false; + m_sangomaRxTcpPortStart = 0; + m_sangomaTxTcpPortStart = 0; } void VoIpConfig::Define(Serializer* s) @@ -82,6 +86,9 @@ void VoIpConfig::Define(Serializer* s) s->BoolValue("SkinnyIgnoreOpenReceiveChannelAck", m_skinnyIgnoreOpenReceiveChannelAck); s->BoolValue("SkinnyDynamicMediaAddress", m_skinnyDynamicMediaAddress); s->BoolValue("SkinnyAllowCallInfoUpdate", m_skinnyAllowCallInfoUpdate); + + s->IntValue("SangomaRxTcpPortStart", m_sangomaRxTcpPortStart); + s->IntValue("SangomaTxTcpPortStart", m_sangomaTxTcpPortStart); } void VoIpConfig::Validate() @@ -249,6 +256,38 @@ void VoIpConfig::Validate() exception.Format("VoIpConfig: RtpSessionOnHoldTimeOutSec must be > 0 (currently:%d) please fix config.xml", m_rtpSessionWithSignallingTimeoutSec); throw (exception); } + + if(m_sangomaRxTcpPortStart == 0) + { + } + else if(m_sangomaRxTcpPortStart > 65000 || m_sangomaRxTcpPortStart < 2000 || ((m_sangomaRxTcpPortStart%1000) != 0) ) + { + CStdString exception; + exception.Format("VoIpConfig: SangomaRxTcpPort must be between 2000 and 65000 and be a multiple of 1000 (currently:%d) please fix config.xml", m_sangomaRxTcpPortStart); + throw (exception); + } + if(m_sangomaTxTcpPortStart == 0) + { + } + else if(m_sangomaTxTcpPortStart > 65000 || m_sangomaTxTcpPortStart < 2000 || ((m_sangomaTxTcpPortStart%1000) != 0) ) + { + CStdString exception; + exception.Format("VoIpConfig: SangomaTxTcpPort must be between 2000 and 65000 and be a multiple of 1000 (currently:%d) please fix config.xml", m_sangomaTxTcpPortStart); + throw (exception); + } + + if(m_sangomaRxTcpPortStart > m_sangomaTxTcpPortStart) + { + CStdString exception; + exception.Format("VoIpConfig: SangomaTxTcpPort should always be bigger than SangomaRxTcpPort please fix config.xml"); + throw (exception); + } + else if(m_sangomaRxTcpPortStart > 0 && m_sangomaTxTcpPortStart>0) + { + m_sangomaTcpPortDelta = m_sangomaTxTcpPortStart - m_sangomaRxTcpPortStart; + m_sangomaEnable = true; + m_rtpDetectOnOddPorts = true; + } } bool VoIpConfig::IsPartOfLan(struct in_addr addr) |