From 3d4b68c5dc68ccaff4af12368bf00e867f76499f Mon Sep 17 00:00:00 2001
From: yanmorin <yanmorin>
Date: Tue, 4 Apr 2006 15:08:48 +0000
Subject: [PATCH] New libiax2 implementation

---
 src/Makefile.am     | 28 ++++++++++++++++++----------
 src/iaxvoiplink.cpp | 30 ++++++++++++++++++++++++++++++
 src/iaxvoiplink.h   |  5 +++--
 src/sipaccount.cpp  |  3 +--
 4 files changed, 52 insertions(+), 14 deletions(-)

diff --git a/src/Makefile.am b/src/Makefile.am
index 014decc044..e4bda731b5 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -11,35 +11,43 @@ ZEROCONFLIB =
 ZEROCONFFLAGS =  
 endif
 
+IAX_LIBS = $(top_builddir)/libs/libiax2/src/libiax.la
+IAX_FLAGS = -DUSE_IAX
+IAX_CFLAGS = -I$(top_srcdir)/libs/libiax2/src/
+IAXSOURCES = iaxvoiplink.cpp
+IAXHEADERS = iaxvoiplink.h
+
 SUBDIRS = audio config gui $(ZEROCONFDIR)
 
 sflphoned_SOURCES = eventthread.cpp 	main.cpp 	voIPLink.cpp \
 		managerimpl.cpp	observer.cpp \
-		account.cpp sipaccount.cpp iaxaccount.cpp accountcreator.cpp iaxvoiplink.cpp \
-                sipvoiplink.cpp call.cpp sipcall.cpp
+		account.cpp sipaccount.cpp iaxaccount.cpp accountcreator.cpp \
+                sipvoiplink.cpp call.cpp sipcall.cpp \
+		$(IAXSOURCES)
 
-sflphoned_CXXFLAGS = -DPREFIX=\"$(prefix)\" -DPROGSHAREDIR=\"${datadir}/sflphone\" $(ZEROCONFFLAGS)
+sflphoned_CXXFLAGS = -DPREFIX=\"$(prefix)\" -DPROGSHAREDIR=\"${datadir}/sflphone\" $(ZEROCONFFLAGS) $(IAX_FLAGS)
 
 #sflphoned_LDFLAGS = -static
-sflphoned_LDADD =  ./libsflphone.la $(SFLPHONE_LIBS) $(ZEROCONFLIB) $(LIB_DNSSD)
-#KDE_CXXFLAGS = $(USE_EXCEPTIONS)
-AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/libs -I$(srcdir)/audio/pacpp/include  $(libccext2_CFLAGS) $(libccgnu2_CFLAGS) $(portaudio_CFLAGS) -I$(top_srcdir)/libs/portaudio/pa_common
+sflphoned_LDADD =  ./libsflphone.la $(SFLPHONE_LIBS) $(ZEROCONFLIB) $(LIB_DNSSD) $(IAX_LIBS)
+AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/libs -I$(srcdir)/audio/pacpp/include  $(libccext2_CFLAGS) $(libccgnu2_CFLAGS) $(portaudio_CFLAGS) -I$(top_srcdir)/libs/portaudio/pa_common $(IAX_CFLAGS)
 
 #libsflphone_la_LDFLAGS= -version-info 0:1:0
 libsflphone_la_LIBADD = \
 	$(top_builddir)/libs/eXosip2/libeXosip2.la \
-	$(top_builddir)/libs/portaudio/libportaudio.la \
 	$(top_builddir)/libs/stund/libstun.la \
 	$(top_builddir)/libs/utilspp/libutilspp.la \
+	$(top_builddir)/libs/portaudio/libportaudio.la \
 	./audio/libaudio.la \
 	./gui/libguiframework.la \
-	./config/libconfig.la 
+	./config/libconfig.la \
+        $(IAX_LIBS)
 
 libsflphone_la_SOURCES =
 
 noinst_LTLIBRARIES = libsflphone.la
 noinst_HEADERS = managerimpl.h manager.h global.h observer.h eventthread.h user_cfg.h \
                  voIPLink.h \
-		 account.h sipaccount.h iaxaccount.h accountcreator.h iaxvoiplink.h \
-                 sipvoiplink.h  call.h  sipcall.h
+		 account.h sipaccount.h iaxaccount.h accountcreator.h \
+                 sipvoiplink.h  call.h  sipcall.h \
+		 $(IAXHEADERS)
 
diff --git a/src/iaxvoiplink.cpp b/src/iaxvoiplink.cpp
index 7b0729d5ac..4de80db39e 100644
--- a/src/iaxvoiplink.cpp
+++ b/src/iaxvoiplink.cpp
@@ -17,6 +17,10 @@
  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 #include "iaxvoiplink.h"
+#include "global.h" // for _debug
+
+#define IAX_SUCCESS  0
+#define IAX_FAILURE -1
 
 IAXVoIPLink::IAXVoIPLink(const AccountID& accountID)
  : VoIPLink(accountID)
@@ -28,4 +32,30 @@ IAXVoIPLink::~IAXVoIPLink()
 {
 }
 
+bool
+IAXVoIPLink::init()
+{
+  bool returnValue = false;
+  //_localAddress = "127.0.0.1";
+  // port 0 is default
+  iax_enable_debug();
+  int port = iax_init(IAX_DEFAULT_PORTNO);
+  if (port == IAX_FAILURE) {
+    _debug("IAX Failure: Error when initializing\n");
+  } else if ( port == 0 ) {
+    _debug("IAX Warning: already initialize\n");
+  } else {
+    _debug("IAX Info: listening on port %d\n", port);
+    _localPort = port;
+    returnValue = true;
+  }
+  return returnValue;
+}
 
+void
+IAXVoIPLink::terminate()
+{
+//  iaxc_shutdown();  
+//  hangup all call
+//  iax_hangup(calls[callNo].session,"Dumped Call");
+}
diff --git a/src/iaxvoiplink.h b/src/iaxvoiplink.h
index fddd03a88a..56f9755cfd 100644
--- a/src/iaxvoiplink.h
+++ b/src/iaxvoiplink.h
@@ -20,6 +20,7 @@
 #define IAXVOIPLINK_H
 
 #include "voIPLink.h"
+#include "iax-client.h"
 
 class AudioCodec;
 
@@ -36,9 +37,9 @@ public:
     ~IAXVoIPLink();
 
   void getEvent (void) { }
-  bool init (void) { return false; }
+  bool init (void);
   bool checkNetwork (void) { return false; }
-  void terminate (void) { }
+  void terminate (void);
 
   bool setRegister (void) { return false; }
   bool setUnregister (void) { return false; }
diff --git a/src/sipaccount.cpp b/src/sipaccount.cpp
index 838b6128d7..1ace8dbedb 100644
--- a/src/sipaccount.cpp
+++ b/src/sipaccount.cpp
@@ -46,7 +46,6 @@ bool
 SIPAccount::createVoIPLink()
 {
   if (!_link) {
-  //_link = new SipVoIPLink();
     _link = new SIPVoIPLink(_accountID);
   }
   return (_link != 0 ? true : false);
@@ -117,13 +116,13 @@ SIPAccount::initConfig(Conf::ConfigTree& config)
   
   config.addConfigTreeItem(section, Conf::ConfigTreeItem(CONFIG_ACCOUNT_TYPE, "SIP", type_str));
   config.addConfigTreeItem(section, Conf::ConfigTreeItem(CONFIG_ACCOUNT_ENABLE,"1", type_int));
+  config.addConfigTreeItem(section, Conf::ConfigTreeItem(CONFIG_ACCOUNT_AUTO_REGISTER, "1", type_int));
   config.addConfigTreeItem(section, Conf::ConfigTreeItem(SIP_FULL_NAME, "", type_str));
   config.addConfigTreeItem(section, Conf::ConfigTreeItem(SIP_USER_PART, "", type_str));
   config.addConfigTreeItem(section, Conf::ConfigTreeItem(SIP_HOST_PART, "", type_str));
   config.addConfigTreeItem(section, Conf::ConfigTreeItem(SIP_AUTH_NAME, "", type_str));
   config.addConfigTreeItem(section, Conf::ConfigTreeItem(SIP_PASSWORD, "", type_str));
   config.addConfigTreeItem(section, Conf::ConfigTreeItem(SIP_PROXY, "", type_str));
-  config.addConfigTreeItem(section, Conf::ConfigTreeItem(CONFIG_ACCOUNT_AUTO_REGISTER, "1", type_int));
   config.addConfigTreeItem(section, Conf::ConfigTreeItem(SIP_STUN_SERVER, "stun.fwdnet.net:3478", type_str));
   config.addConfigTreeItem(section, Conf::ConfigTreeItem(SIP_USE_STUN, "0", type_int));
 }
-- 
GitLab