rpms/asterisk/F-9 asterisk-1.6.0-beta9-alternate-extensions.patch, NONE, 1.1 asterisk-1.6.0-beta9-alternate-voicemail.patch, NONE, 1.1 asterisk-1.6.0-beta9-appconference.patch, NONE, 1.1 asterisk-1.6.0-beta9-autoconf.patch, NONE, 1.1 asterisk-1.6.0-beta9-chanmobile.patch, NONE, 1.1 asterisk-1.6.0-beta9-editline.patch, NONE, 1.1 asterisk-1.6.0-beta9-initscripts.patch, NONE, 1.1 asterisk-1.6.0-beta9-lua.patch, NONE, 1.1 asterisk-1.6.0-beta9-optimization.patch, NONE, 1.1 asterisk-1.6.0-beta9-spandspfax.patch, NONE, 1.1 asterisk.spec, 1.24, 1.25 sources, 1.14, 1.15 asterisk-1.6.0-beta7.1-alternate-extensions.patch, 1.1, NONE asterisk-1.6.0-beta7.1-alternate-voicemail.patch, 1.1, NONE asterisk-1.6.0-beta7.1-appconference.patch, 1.1, NONE asterisk-1.6.0-beta7.1-autoconf.patch, 1.1, NONE asterisk-1.6.0-beta7.1-chanmobile.patch, 1.1, NONE asterisk-1.6.0-beta7.1-editline.patch, 1.1, NONE asterisk-1.6.0-beta7.1-initscripts.patch, 1.1, NONE asterisk-1.6.0-beta7.1-lua.patch, 1.1, NONE asterisk-1.6.0-beta7.1-optimization.patch, 1.1, NONE asterisk-1.6.0-beta7.1-spandspfax.patch, 1.1, NONE
Jeffrey C. Ollie (jcollie)
fedora-extras-commits at redhat.com
Mon May 19 15:41:51 UTC 2008
Author: jcollie
Update of /cvs/pkgs/rpms/asterisk/F-9
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv22763
Modified Files:
asterisk.spec sources
Added Files:
asterisk-1.6.0-beta9-alternate-extensions.patch
asterisk-1.6.0-beta9-alternate-voicemail.patch
asterisk-1.6.0-beta9-appconference.patch
asterisk-1.6.0-beta9-autoconf.patch
asterisk-1.6.0-beta9-chanmobile.patch
asterisk-1.6.0-beta9-editline.patch
asterisk-1.6.0-beta9-initscripts.patch
asterisk-1.6.0-beta9-lua.patch
asterisk-1.6.0-beta9-optimization.patch
asterisk-1.6.0-beta9-spandspfax.patch
Removed Files:
asterisk-1.6.0-beta7.1-alternate-extensions.patch
asterisk-1.6.0-beta7.1-alternate-voicemail.patch
asterisk-1.6.0-beta7.1-appconference.patch
asterisk-1.6.0-beta7.1-autoconf.patch
asterisk-1.6.0-beta7.1-chanmobile.patch
asterisk-1.6.0-beta7.1-editline.patch
asterisk-1.6.0-beta7.1-initscripts.patch
asterisk-1.6.0-beta7.1-lua.patch
asterisk-1.6.0-beta7.1-optimization.patch
asterisk-1.6.0-beta7.1-spandspfax.patch
Log Message:
* Mon May 19 2008 Jeffrey C. Ollie <jeff at ocjtech.us> - 1.6.0-0.14.beta9
- Update to 1.6.0-beta9.
- Update patches so that they apply cleanly.
- Temporarily disable app_conference patch as it doesn't compile
- config/scripts/postgres_cdr.sql has been merged into realtime_pgsql.sql
- Re-add the asterisk-strip.sh script as a source file.
asterisk-1.6.0-beta9-alternate-extensions.patch:
--- NEW FILE asterisk-1.6.0-beta9-alternate-extensions.patch ---
>From 2cd10f7308ae4d68b0265e32e1b9c39abae0db6f Mon Sep 17 00:00:00 2001
From: Jeffrey C. Ollie <jcollie at pc21224.campus.dmacc.edu>
Date: Thu, 8 Nov 2007 16:32:56 -0600
Subject: [PATCH] Allow alternate extensions to be specified in users.conf
---
pbx/pbx_config.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c
index 4a7a3d3..0e38d88 100644
--- a/pbx/pbx_config.c
+++ b/pbx/pbx_config.c
@@ -1532,11 +1532,14 @@ static void pbx_load_users(void)
{
struct ast_config *cfg;
char *cat, *chan;
+ char *ext;
const char *zapchan;
const char *hasexten;
+ const char *altexts;
char tmp[256];
char iface[256];
char zapcopy[256];
+ char altcopy[256];
char *c;
int len;
int hasvoicemail;
@@ -1617,6 +1620,17 @@ static void pbx_load_users(void)
} else {
ast_add_extension2(con, 0, cat, 1, NULL, NULL, "Dial", strdup("${HINT}"), ast_free_ptr, registrar);
}
+ altexts = ast_variable_retrieve(cfg, cat, "alternateexts");
+ if (!ast_strlen_zero(altexts)) {
+ snprintf(tmp, sizeof(tmp), "%s|1", cat);
+ ast_copy_string(altcopy, altexts, sizeof(altcopy));
+ c = altcopy;
+ ext = strsep(&c, ",");
+ while (ext) {
+ ast_add_extension2(con, 0, ext, 1, NULL, NULL, "Goto", strdup(tmp), ast_free, registrar);
+ ext = strsep(&c, ",");
+ }
+ }
}
}
ast_config_destroy(cfg);
--
1.5.4.3
asterisk-1.6.0-beta9-alternate-voicemail.patch:
--- NEW FILE asterisk-1.6.0-beta9-alternate-voicemail.patch ---
>From 3c8904d14cf3f6b7414114afbca73aae58f33ace Mon Sep 17 00:00:00 2001
From: Jeffrey C. Ollie <jcollie at pc21224.campus.dmacc.edu>
Date: Thu, 8 Nov 2007 15:52:36 -0600
Subject: [PATCH] Modify modules.conf so that different voicemail modules can be loaded.
---
configs/modules.conf.sample | 27 +++++++++++++++++++++++++++
1 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/configs/modules.conf.sample b/configs/modules.conf.sample
index 2ca3c03..ae20637 100644
--- a/configs/modules.conf.sample
+++ b/configs/modules.conf.sample
@@ -37,3 +37,30 @@ load => res_musiconhold.so
noload => chan_alsa.so
;noload => chan_oss.so
;noload => chan_console.so
+
+;
+; Voicemail storage selection
+;
+; Comment out the "noload" lines for the voicemail
+; storage system that you want. Leave the ones that
+; you don't want uncommented.
+;
+
+;
+; Voicemail with IMAP storage
+;
+noload => app_directory_imap.so
+noload => app_voicemail_imap.so
+
+;
+; Voicemail with ODBC storage
+;
+noload => app_directory_odbc.so
+noload => app_voicemail_odbc.so
+
+;
+; Voicemail with filesystem storage
+;
+;noload => app_directory_plain.so
+;noload => app_voicemail_plain.so
+
--
1.5.4.3
asterisk-1.6.0-beta9-appconference.patch:
--- NEW FILE asterisk-1.6.0-beta9-appconference.patch ---
>From e55ba5154efbfa3f5f7dcc32f87655d5d95b25ed Mon Sep 17 00:00:00 2001
From: Jeffrey C. Ollie <jeff at ocjtech.us>
Date: Mon, 18 Feb 2008 08:58:05 -0600
Subject: [PATCH] Latest updates for app_conference.
---
apps/Makefile | 14 +
apps/app_conference.c | 113 ++
apps/conference/CLI.txt | 95 +
apps/conference/Flags.txt | 34 +
apps/conference/LICENSE | 341 ++++
apps/conference/README | 125 ++
apps/conference/README.videoswitch | 85 +
apps/conference/TODO | 4 +
apps/conference/app_conference.h | 246 +++
apps/conference/cli.c | 1265 ++++++++++++++
apps/conference/cli.h | 99 ++
apps/conference/common.h | 63 +
apps/conference/conf_frame.h | 73 +
apps/conference/conference.c | 3021 ++++++++++++++++++++++++++++++++
apps/conference/conference.h | 190 ++
apps/conference/frame.c | 666 +++++++
apps/conference/frame.h | 75 +
apps/conference/member.c | 3375 ++++++++++++++++++++++++++++++++++++
apps/conference/member.h | 336 ++++
19 files changed, 10220 insertions(+), 0 deletions(-)
create mode 100644 apps/app_conference.c
create mode 100644 apps/conference/CLI.txt
create mode 100644 apps/conference/Flags.txt
create mode 100644 apps/conference/LICENSE
create mode 100644 apps/conference/README
create mode 100644 apps/conference/README.videoswitch
create mode 100644 apps/conference/TODO
create mode 100644 apps/conference/app_conference.h
create mode 100644 apps/conference/cli.c
create mode 100644 apps/conference/cli.h
create mode 100644 apps/conference/common.h
create mode 100644 apps/conference/conf_frame.h
create mode 100644 apps/conference/conference.c
create mode 100644 apps/conference/conference.h
create mode 100644 apps/conference/frame.c
create mode 100644 apps/conference/frame.h
create mode 100644 apps/conference/member.c
create mode 100644 apps/conference/member.h
diff --git a/apps/Makefile b/apps/Makefile
index 22b8f6d..f52fe9e 100644
--- a/apps/Makefile
+++ b/apps/Makefile
@@ -32,6 +32,20 @@ endif
all: _all
+app_conference.o: ASTCFLAGS+=-DSILDET=2 -Iconference
+
+conference/conference.o: ASTCFLAGS+=-DSILDET=2 -Iconference
+
+conference/member.o: ASTCFLAGS+=-DSILDET=2 -Iconference
+
+conference/frame.o: ASTCFLAGS+=-DSILDET=2 -Iconference
+
+conference/cli.o: ASTCFLAGS+=-DSILDET=2 -Iconference
+
+app_conference.so: app_conference.o conference/conference.o conference/member.o conference/frame.o conference/cli.o
+ $(ECHO_PREFIX) echo " [LD] $^ -> $@"
+ $(CMD_PREFIX) $(CXX) $(PTHREAD_CFLAGS) $(ASTLDFLAGS) $(SOLINK) -o $@ $^ -lspeex
+
include $(ASTTOPDIR)/Makefile.moddir_rules
ifneq ($(findstring $(OSARCH), mingw32 cygwin ),)
diff --git a/apps/app_conference.c b/apps/app_conference.c
new file mode 100644
index 0000000..824d5dd
--- /dev/null
+++ b/apps/app_conference.c
@@ -0,0 +1,113 @@
+/*
+ * app_conference
+ *
+ * A channel independent conference application for Asterisk
+ *
+ * Copyright (C) 2002, 2003 Junghanns.NET GmbH
+ * Copyright (C) 2003, 2004 HorizonLive.com, Inc.
+ * Copyright (C) 2005, 2006 HorizonWimba, Inc.
+ * Copyright (C) 2007 Wimba, Inc.
+ *
+ * Klaus-Peter Junghanns <kapejod at ns1.jnetdns.de>
+ *
+ * Video Conferencing support added by
+ * Neil Stratford <neils at vipadia.com>
+ * Copyright (C) 2005, 2005 Vipadia Limited
+ *
+ * VAD driven video conferencing, text message support
+ * and miscellaneous enhancements added by
+ * Mihai Balea <mihai at hates dot ms>
+ *
+ * This program may be modified and distributed under the
+ * terms of the GNU General Public License. You should have received
+ * a copy of the GNU General Public License along with this
+ * program; if not, write to the Free Software Foundation, Inc.
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "asterisk.h"
+
+// SVN revision number, provided by make
+#ifndef REVISION
+#define REVISION "unknown"
+#endif
+
+static char *revision = REVISION;
+
+ASTERISK_FILE_VERSION(__FILE__, REVISION)
+
+#include "app_conference.h"
+#include "common.h"
+
+/*
+ * a conference has n + 1 threads, where n is the number of
+ * members and 1 is a conference thread which sends audio
+ * back to the members.
+ *
+ * each member thread reads frames from the channel and
+ * add's them to the member's frame queue.
+ *
+ * the conference thread reads frames from each speaking members
+ * queue, mixes them, and then re-queues them for the member thread
+ * to send back to the user.
+ */
+
+static char *app = "Conference";
+static char *synopsis = "Channel Independent Conference";
+static char *descrip = "Channel Independent Conference Application";
+
+static int app_conference_main(struct ast_channel* chan, void* data)
+{
+ int res ;
+ struct ast_module_user *u ;
+
+ u = ast_module_user_add(chan);
+
+ // call member thread function
+ res = member_exec( chan, data ) ;
+
+ ast_module_user_remove(u);
+
+ return res ;
+}
+
+static int unload_module( void )
+{
+ ast_log( LOG_NOTICE, "unloading app_conference module\n" ) ;
+
+ ast_module_user_hangup_all();
+
+ unregister_conference_cli() ;
+
+ return ast_unregister_application( app ) ;
+}
+
+static int load_module( void )
+{
+ ast_log( LOG_NOTICE, "Loading app_conference module, revision=%s\n", revision) ;
+
+ init_conference() ;
+
+ register_conference_cli() ;
+
+ return ast_register_application( app, app_conference_main, synopsis, descrip ) ;
+}
+
+// increment a timeval by ms milliseconds
+void add_milliseconds(struct timeval* tv, long ms)
+{
+ // add the microseconds to the microseconds field
+ tv->tv_usec += ( ms * 1000 ) ;
+
+ // calculate the number of seconds to increment
+ long s = ( tv->tv_usec / 1000000 ) ;
+
+ // adjust the microsends field
+ if ( s > 0 ) tv->tv_usec -= ( s * 1000000 ) ;
+
+ // increment the seconds field
+ tv->tv_sec += s ;
+}
+
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY,
+ "Channel Independent Conference Application");
diff --git a/apps/conference/CLI.txt b/apps/conference/CLI.txt
new file mode 100644
index 0000000..d54f9d1
--- /dev/null
+++ b/apps/conference/CLI.txt
@@ -0,0 +1,95 @@
+Current command line used by app_conference
+Please note that app_conference is still work in progress, so this document might be outdated. As always, the source code is the definitive reference (cli.[ch] and conference.[ch]). You can also obtain help/usage information by using Asterisk CLI help system ("help conference")
+
+A member in a conference can be referred to by its id or by its channel. Id is a positive number assigned automatically when the member joins the conference. Channel is Asterisk channel identifier. To obtain a list of member ids and channels in a conference, do:
[...9988 lines suppressed...]
+ conf_frame* outVideoFramesTail ;
+ unsigned int outVideoFramesCount ;
+ conf_frame* outDTMFFrames ;
+ conf_frame* outDTMFFramesTail ;
+ unsigned int outDTMFFramesCount ;
+ conf_frame* outTextFrames ;
+ conf_frame* outTextFramesTail ;
+ unsigned int outTextFramesCount ;
+
+ // LL video switched flag
+ short conference;
+
+ // switch video by VAD?
+ short vad_switch;
+ // do a VAD switch even if video is not enabled?
+ short force_vad_switch;
+ // if member is current speaker, video will stay on it when it becomes silent
+ short vad_linger;
+ // switch by dtmf?
+ short dtmf_switch;
+ // relay dtmf to manager?
+ short dtmf_relay;
+ // initial nat delay flag
+ short first_frame_received;
+ // does text messages?
+ short does_text;
+ // conference does chat mode (1 on 1 video when two members in conference)
+ short does_chat_mode;
+
+
+ // time we last dropped a frame
+ struct timeval last_in_dropped ;
+ struct timeval last_out_dropped ;
+
+ // ( not currently used )
+ // int samplesperframe ;
+
+ // used for determining need to mix frames
+ // and for management interface notification
+ // and for VAD based video switching
+ short speaking_state_notify ;
+ short speaking_state ; // This flag will be true if this member or any of its drivers is speaking
+ short local_speaking_state; // This flag will be true only if this member is speaking
+ struct timeval last_state_change;
+ int speaker_count; // Number of drivers (including this member) that are speaking
+
+ // Stuff used to determine video broadcast state
+ // This member's video is sent out to at least one member of the conference
+ short video_broadcast_active;
+ // Time when we last sent out a video frame from this member
+ struct timeval last_video_frame_time;
+
+ // Is the member supposed to be transmitting video?
+ short video_started;
+
+ // pointer to next member in single-linked list
+ struct ast_conf_member* next ;
+
+ // accounting values
+ unsigned long frames_in ;
+ unsigned long frames_in_dropped ;
+ unsigned long frames_out ;
+ unsigned long frames_out_dropped ;
+
+ unsigned long video_frames_in ;
+ unsigned long video_frames_in_dropped ;
+ unsigned long video_frames_out ;
+ unsigned long video_frames_out_dropped ;
+
+ unsigned long dtmf_frames_in ;
+ unsigned long dtmf_frames_in_dropped ;
+ unsigned long dtmf_frames_out ;
+ unsigned long dtmf_frames_out_dropped ;
+
+ unsigned long text_frames_in ;
+ unsigned long text_frames_in_dropped ;
+ unsigned long text_frames_out ;
+ unsigned long text_frames_out_dropped ;
+
+ // for counting sequentially dropped frames
+ unsigned int sequential_drops ;
+ unsigned long since_dropped ;
+
+ // start time
+ struct timeval time_entered ;
+ struct timeval lastsent_timeval ;
+
+ // flag indicating we should remove this member
+ short remove_flag ;
+ short kick_flag ;
+
+#if ( SILDET == 2 )
+ // pointer to speex preprocessor dsp
+ SpeexPreprocessState *dsp ;
+ // number of frames to ignore speex_preprocess()
+ int ignore_speex_count;
+#else
+ // placeholder when preprocessing is not enabled
+ void* dsp ;
+#endif
+
+ // audio format this member is using
+ int write_format ;
+ int read_format ;
+
+ int write_format_index ;
+ int read_format_index ;
+
+ // member frame translators
+ struct ast_trans_pvt* to_slinear ;
+ struct ast_trans_pvt* from_slinear ;
+
+ // For playing sounds
+ struct ast_conf_soundq *soundq;
+ struct ast_conf_soundq *videoq;
+
+ // Enter/leave sounds
+ char * enter_snd;
+ char * leave_snd;
+
+ // Pointer to another member that will be driven from this member's audio
+ struct ast_conf_member *driven_member;
+} ;
+
+struct conf_member
+{
+ struct ast_conf_member* realmember ;
+ struct conf_member* next ;
+} ;
+
+//
+// function declarations
+//
+
+int member_exec( struct ast_channel* chan, void* data ) ;
+
+struct ast_conf_member* check_active_video( int id, struct ast_conference *conf );
+
+struct ast_conf_member* create_member( struct ast_channel* chan, const char* data ) ;
+struct ast_conf_member* delete_member( struct ast_conf_member* member ) ;
+
+// incoming queue
+int queue_incoming_frame( struct ast_conf_member* member, struct ast_frame* fr ) ;
+int queue_incoming_video_frame( struct ast_conf_member* member, const struct ast_frame* fr ) ;
+int queue_incoming_dtmf_frame( struct ast_conf_member* member, const struct ast_frame* fr ) ;
+conf_frame* get_incoming_frame( struct ast_conf_member* member ) ;
+conf_frame* get_incoming_video_frame( struct ast_conf_member* member ) ;
+conf_frame* get_incoming_dtmf_frame( struct ast_conf_member* member ) ;
+
+// outgoing queue
+int queue_outgoing_frame( struct ast_conf_member* member, const struct ast_frame* fr, struct timeval delivery ) ;
+int __queue_outgoing_frame( struct ast_conf_member* member, const struct ast_frame* fr, struct timeval delivery ) ;
+conf_frame* get_outgoing_frame( struct ast_conf_member* member ) ;
+
+int queue_outgoing_video_frame( struct ast_conf_member* member, const struct ast_frame* fr, struct timeval delivery ) ;
+conf_frame* get_outgoing_video_frame( struct ast_conf_member* member ) ;
+int queue_outgoing_dtmf_frame( struct ast_conf_member* member, const struct ast_frame* fr ) ;
+int queue_outgoing_text_frame( struct ast_conf_member* member, const struct ast_frame* fr ) ;
+conf_frame* get_outgoing_dtmf_frame( struct ast_conf_member* member ) ;
+conf_frame* get_outgoing_text_frame( struct ast_conf_member* member ) ;
+
+void send_state_change_notifications( struct ast_conf_member* member ) ;
+
+int increment_speaker_count(struct ast_conf_member *member, int lock);
+int decrement_speaker_count(struct ast_conf_member *member, int lock);
+
+void member_process_spoken_frames(struct ast_conference* conf,
+ struct ast_conf_member *member,
+ struct conf_frame **spoken_frames,
+ long time_diff,
+ int *listener_count,
+ int *speaker_count);
+
+void member_process_outgoing_frames(struct ast_conference* conf,
+ struct ast_conf_member *member,
+ struct conf_frame *send_frames);
+
+int is_video_eligible(struct ast_conf_member *member);
+
+// Member start and stop video methods
+void start_video(struct ast_conf_member *member);
+void stop_video(struct ast_conf_member *member);
+
+//
+// packer functions
+//
+
+struct ast_packer;
+
+extern struct ast_packer *ast_packer_new(int bytes);
+extern void ast_packer_set_flags(struct ast_packer *packer, int flags);
+extern int ast_packer_get_flags(struct ast_packer *packer);
+extern void ast_packer_free(struct ast_packer *s);
+extern void ast_packer_reset(struct ast_packer *s, int bytes);
+extern int ast_packer_feed(struct ast_packer *s, const struct ast_frame *f);
+extern struct ast_frame *ast_packer_read(struct ast_packer *s);
+#endif
--
1.5.4.3
asterisk-1.6.0-beta9-autoconf.patch:
--- NEW FILE asterisk-1.6.0-beta9-autoconf.patch ---
>From ae5eb1dfb045ceec41777baf095feb32779f64ab Mon Sep 17 00:00:00 2001
From: Jeffrey C. Ollie <jeff at ocjtech.us>
Date: Wed, 14 May 2008 14:03:39 -0500
Subject: [PATCH] Update autoconf.
---
configure | 983 +++++++++++++++++++++++++++++++-------
include/asterisk/autoconfig.h.in | 20 +-
2 files changed, 820 insertions(+), 183 deletions(-)
diff --git a/configure b/configure
index d72fa38..93c1024 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
#! /bin/sh
-# From configure.ac Revision: 115581 .
+# From configure.ac Revision.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for asterisk 1.6.
#
@@ -728,14 +728,18 @@ BKTR_LIB
BKTR_INCLUDE
BKTR_DIR
PBX_BKTR
-CAP_LIB
-CAP_INCLUDE
-CAP_DIR
-PBX_CAP
+BLUETOOTH_LIB
+BLUETOOTH_INCLUDE
+BLUETOOTH_DIR
+PBX_BLUETOOTH
CURL_LIB
CURL_INCLUDE
CURL_DIR
PBX_CURL
+CAP_LIB
+CAP_INCLUDE
+CAP_DIR
+PBX_CAP
CURSES_LIB
CURSES_INCLUDE
CURSES_DIR
@@ -788,6 +792,10 @@ LDAP_LIB
LDAP_INCLUDE
LDAP_DIR
PBX_LDAP
+LIBEDIT_LIB
+LIBEDIT_INCLUDE
+LIBEDIT_DIR
+PBX_LIBEDIT
LTDL_LIB
LTDL_INCLUDE
LTDL_DIR
@@ -872,6 +880,10 @@ SDL_IMAGE_LIB
SDL_IMAGE_INCLUDE
SDL_IMAGE_DIR
PBX_SDL_IMAGE
+SPANDSP_LIB
+SPANDSP_INCLUDE
+SPANDSP_DIR
+PBX_SPANDSP
SPEEX_LIB
SPEEX_INCLUDE
SPEEX_DIR
@@ -963,6 +975,7 @@ OPENH323_INCDIR
OPENH323_LIBDIR
OPENH323_SUFFIX
OPENH323_BUILD
+PKGCONFIG
PBX_SPEEX_PREPROCESS
CONFIG_GMIME
PBX_ZAPTEL_VLDTMF
@@ -976,7 +989,7 @@ PBX_H323
PBX_IXJUSER
CONFIG_SDL
CONFIG_GTK
-PKGCONFIG
+LIBEDIT_OBJ
CURL_CONFIG
LTLIBOBJS'
ac_subst_files=''
@@ -1576,8 +1589,9 @@ Optional Packages:
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
--with-asound=PATH use Advanced Linux Sound Architecture files in PATH
--with-execinfo=PATH use Stack Backtrace support files in PATH
- --with-cap=PATH use POSIX 1.e capabilities files in PATH
+ --with-bluetooth=PATH use Bluetooth Support files in PATH
--with-curl=PATH use cURL files in PATH
+ --with-cap=PATH use POSIX 1.e capabilities files in PATH
--with-curses=PATH use curses files in PATH
--with-crypto=PATH use OpenSSL Cryptography support files in PATH
--with-avcodec=PATH use Ffmpeg and avcodec library files in PATH
@@ -1592,6 +1606,7 @@ Optional Packages:
--with-isdnnet=PATH use ISDN4Linux Library files in PATH
--with-jack=PATH use Jack Audio Connection Kit files in PATH
--with-ldap=PATH use OpenLDAP files in PATH
+ --with-libedit=PATH use NetBSD Editline library files in PATH
--with-ltdl=PATH use libtool files in PATH
--with-lua=PATH use Lua files in PATH
--with-misdn=PATH use mISDN User Library files in PATH
@@ -1613,6 +1628,7 @@ Optional Packages:
--with-radius=PATH use Radius Client files in PATH
--with-sdl=PATH use Sdl files in PATH
--with-SDL_image=PATH use Sdl Image library files in PATH
+ --with-spandsp=PATH use spandsp Library files in PATH
--with-speex=PATH use Speex files in PATH
--with-speexdsp=PATH use Speexdsp files in PATH
--with-sqlite=PATH use SQLite files in PATH
@@ -7942,6 +7958,62 @@ fi
+ BLUETOOTH_DESCRIP="Bluetooth Support"
+ BLUETOOTH_OPTION="bluetooth"
+
+# Check whether --with-bluetooth was given.
+if test "${with_bluetooth+set}" = set; then
+ withval=$with_bluetooth;
+ case ${withval} in
+ n|no)
+ USE_BLUETOOTH=no
+ ;;
+ y|ye|yes)
+ ac_mandatory_list="${ac_mandatory_list} BLUETOOTH"
+ ;;
+ *)
+ BLUETOOTH_DIR="${withval}"
+ ac_mandatory_list="${ac_mandatory_list} BLUETOOTH"
+ ;;
+ esac
+
+fi
+
+ PBX_BLUETOOTH=0
+
+
+
+
+
+
+ CURL_DESCRIP="cURL"
+ CURL_OPTION="curl"
+
+# Check whether --with-curl was given.
+if test "${with_curl+set}" = set; then
+ withval=$with_curl;
+ case ${withval} in
+ n|no)
+ USE_CURL=no
+ ;;
+ y|ye|yes)
+ ac_mandatory_list="${ac_mandatory_list} CURL"
+ ;;
+ *)
+ CURL_DIR="${withval}"
+ ac_mandatory_list="${ac_mandatory_list} CURL"
+ ;;
+ esac
+
+fi
+
+ PBX_CURL=0
+
+
+
+
+
+
CAP_DESCRIP="POSIX 1.e capabilities"
CAP_OPTION="cap"
@@ -8362,6 +8434,34 @@ fi
+ LIBEDIT_DESCRIP="NetBSD Editline library"
+ LIBEDIT_OPTION="libedit"
+
+# Check whether --with-libedit was given.
+if test "${with_libedit+set}" = set; then
+ withval=$with_libedit;
+ case ${withval} in
+ n|no)
+ USE_LIBEDIT=no
+ ;;
+ y|ye|yes)
+ ac_mandatory_list="${ac_mandatory_list} LIBEDIT"
+ ;;
+ *)
+ LIBEDIT_DIR="${withval}"
+ ac_mandatory_list="${ac_mandatory_list} LIBEDIT"
+ ;;
+ esac
+
+fi
+
+ PBX_LIBEDIT=0
+
+
+
+
+
+
LTDL_DESCRIP="libtool"
LTDL_OPTION="ltdl"
@@ -8950,6 +9050,34 @@ fi
+ SPANDSP_DESCRIP="spandsp Library"
+ SPANDSP_OPTION="spandsp"
+
+# Check whether --with-spandsp was given.
+if test "${with_spandsp+set}" = set; then
+ withval=$with_spandsp;
+ case ${withval} in
+ n|no)
+ USE_SPANDSP=no
+ ;;
+ y|ye|yes)
+ ac_mandatory_list="${ac_mandatory_list} SPANDSP"
+ ;;
+ *)
+ SPANDSP_DIR="${withval}"
+ ac_mandatory_list="${ac_mandatory_list} SPANDSP"
+ ;;
+ esac
+
+fi
+
+ PBX_SPANDSP=0
+
+
+
+
+
+
SPEEX_DESCRIP="Speex"
SPEEX_OPTION="speex"
@@ -12772,13 +12900,11 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <sys/types.h> /* for off_t */
- #include <stdio.h>
+#include <stdio.h>
int
main ()
{
-int (*fp) (FILE *, off_t, int) = fseeko;
- return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
;
return 0;
}
@@ -12818,13 +12944,11 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#define _LARGEFILE_SOURCE 1
-#include <sys/types.h> /* for off_t */
- #include <stdio.h>
+#include <stdio.h>
int
main ()
{
-int (*fp) (FILE *, off_t, int) = fseeko;
- return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
+return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
;
return 0;
}
@@ -18333,6 +18457,268 @@ fi
+if test "x${PBX_BLUETOOTH}" != "x1" -a "${USE_BLUETOOTH}" != "no"; then
+ pbxlibdir=""
+ # if --with-BLUETOOTH=DIR has been specified, use it.
+ if test "x${BLUETOOTH_DIR}" != "x"; then
+ if test -d ${BLUETOOTH_DIR}/lib; then
+ pbxlibdir="-L${BLUETOOTH_DIR}/lib"
+ else
+ pbxlibdir="-L${BLUETOOTH_DIR}"
+ fi
+ fi
+ pbxfuncname="ba2str"
+ if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
+ AST_BLUETOOTH_FOUND=yes
+ else
+ as_ac_Lib=`echo "ac_cv_lib_bluetooth_${pbxfuncname}" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for ${pbxfuncname} in -lbluetooth" >&5
+echo $ECHO_N "checking for ${pbxfuncname} in -lbluetooth... $ECHO_C" >&6; }
+if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbluetooth ${pbxlibdir} $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ${pbxfuncname} ();
+int
+main ()
+{
+return ${pbxfuncname} ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_Lib=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Lib=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+ac_res=`eval echo '${'$as_ac_Lib'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Lib'}'` = yes; then
+ AST_BLUETOOTH_FOUND=yes
+else
+ AST_BLUETOOTH_FOUND=no
+fi
+
+ fi
+
+ # now check for the header.
+ if test "${AST_BLUETOOTH_FOUND}" = "yes"; then
+ BLUETOOTH_LIB="${pbxlibdir} -lbluetooth "
+ # if --with-BLUETOOTH=DIR has been specified, use it.
+ if test "x${BLUETOOTH_DIR}" != "x"; then
+ BLUETOOTH_INCLUDE="-I${BLUETOOTH_DIR}/include"
+ fi
+ BLUETOOTH_INCLUDE="${BLUETOOTH_INCLUDE} "
+ if test "xbluetooth/bluetooth.h" = "x" ; then # no header, assume found
+ BLUETOOTH_HEADER_FOUND="1"
+ else # check for the header
+ saved_cppflags="${CPPFLAGS}"
+ CPPFLAGS="${CPPFLAGS} ${BLUETOOTH_INCLUDE} "
+ if test "${ac_cv_header_bluetooth_bluetooth_h+set}" = set; then
+ { echo "$as_me:$LINENO: checking for bluetooth/bluetooth.h" >&5
+echo $ECHO_N "checking for bluetooth/bluetooth.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_bluetooth_bluetooth_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_bluetooth_bluetooth_h" >&5
+echo "${ECHO_T}$ac_cv_header_bluetooth_bluetooth_h" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking bluetooth/bluetooth.h usability" >&5
+echo $ECHO_N "checking bluetooth/bluetooth.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <bluetooth/bluetooth.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking bluetooth/bluetooth.h presence" >&5
+echo $ECHO_N "checking bluetooth/bluetooth.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <bluetooth/bluetooth.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: bluetooth/bluetooth.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: bluetooth/bluetooth.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: bluetooth/bluetooth.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: bluetooth/bluetooth.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: bluetooth/bluetooth.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: bluetooth/bluetooth.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: bluetooth/bluetooth.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: bluetooth/bluetooth.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: bluetooth/bluetooth.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: bluetooth/bluetooth.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: bluetooth/bluetooth.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: bluetooth/bluetooth.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: bluetooth/bluetooth.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: bluetooth/bluetooth.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: bluetooth/bluetooth.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: bluetooth/bluetooth.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## ------------------------------- ##
+## Report this to www.asterisk.org ##
+## ------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for bluetooth/bluetooth.h" >&5
+echo $ECHO_N "checking for bluetooth/bluetooth.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_bluetooth_bluetooth_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_bluetooth_bluetooth_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_bluetooth_bluetooth_h" >&5
+echo "${ECHO_T}$ac_cv_header_bluetooth_bluetooth_h" >&6; }
+
+fi
+if test $ac_cv_header_bluetooth_bluetooth_h = yes; then
+ BLUETOOTH_HEADER_FOUND=1
+else
+ BLUETOOTH_HEADER_FOUND=0
+fi
+
+
+ CPPFLAGS="${saved_cppflags}"
+ fi
+ if test "x${BLUETOOTH_HEADER_FOUND}" = "x0" ; then
+ BLUETOOTH_LIB=""
+ BLUETOOTH_INCLUDE=""
+ else
+ if test "x${pbxfuncname}" = "x" ; then # only checking headers -> no library
+ BLUETOOTH_LIB=""
+ fi
+ PBX_BLUETOOTH=1
+ # XXX don't know how to evaluate the description (third argument) in AC_DEFINE_UNQUOTED
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_BLUETOOTH 1
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_BLUETOOTH_VERSION
+_ACEOF
+
+ fi
+ fi
+fi
+
+
+
if test "x${PBX_CURSES}" != "x1" -a "${USE_CURSES}" != "no"; then
pbxlibdir=""
# if --with-CURSES=DIR has been specified, use it.
@@ -41087,31 +41473,137 @@ _ACEOF
fi
-LUA_INCLUDE="-I/usr/include/lua5.1"
-LUA_LIB="-llua5.1"
+PBX_LUA=0
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_PKGCONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$PKGCONFIG"; then
+ ac_cv_prog_PKGCONFIG="$PKGCONFIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_PKGCONFIG="${ac_tool_prefix}pkg-config"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+PKGCONFIG=$ac_cv_prog_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+ { echo "$as_me:$LINENO: result: $PKGCONFIG" >&5
+echo "${ECHO_T}$PKGCONFIG" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_PKGCONFIG"; then
+ ac_ct_PKGCONFIG=$PKGCONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_PKGCONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_PKGCONFIG"; then
+ ac_cv_prog_ac_ct_PKGCONFIG="$ac_ct_PKGCONFIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_PKGCONFIG="pkg-config"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_PKGCONFIG=$ac_cv_prog_ac_ct_PKGCONFIG
+if test -n "$ac_ct_PKGCONFIG"; then
+ { echo "$as_me:$LINENO: result: $ac_ct_PKGCONFIG" >&5
+echo "${ECHO_T}$ac_ct_PKGCONFIG" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_PKGCONFIG" = x; then
+ PKGCONFIG="No"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKGCONFIG=$ac_ct_PKGCONFIG
+ fi
+else
+ PKGCONFIG="$ac_cv_prog_PKGCONFIG"
+fi
+
+if test ! "x${PKGCONFIG}" = xNo; then
+ LUA_INCLUDE=$(${PKGCONFIG} lua --cflags 2>/dev/null)
+ LUA_LIB=$(${PKGCONFIG} lua --libs 2>/dev/null)
+ PBX_LUA=1
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LUA 1
+_ACEOF
+
+fi
+
-if test "x${PBX_LUA}" != "x1" -a "${USE_LUA}" != "no"; then
+if test "x${PBX_RADIUS}" != "x1" -a "${USE_RADIUS}" != "no"; then
pbxlibdir=""
- # if --with-LUA=DIR has been specified, use it.
- if test "x${LUA_DIR}" != "x"; then
- if test -d ${LUA_DIR}/lib; then
- pbxlibdir="-L${LUA_DIR}/lib"
+ # if --with-RADIUS=DIR has been specified, use it.
+ if test "x${RADIUS_DIR}" != "x"; then
+ if test -d ${RADIUS_DIR}/lib; then
+ pbxlibdir="-L${RADIUS_DIR}/lib"
else
- pbxlibdir="-L${LUA_DIR}"
+ pbxlibdir="-L${RADIUS_DIR}"
fi
fi
- pbxfuncname="luaL_newstate"
+ pbxfuncname="rc_read_config"
if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
- AST_LUA_FOUND=yes
+ AST_RADIUS_FOUND=yes
else
- as_ac_Lib=`echo "ac_cv_lib_lua5.1_${pbxfuncname}" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for ${pbxfuncname} in -llua5.1" >&5
-echo $ECHO_N "checking for ${pbxfuncname} in -llua5.1... $ECHO_C" >&6; }
+ as_ac_Lib=`echo "ac_cv_lib_radiusclient-ng_${pbxfuncname}" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for ${pbxfuncname} in -lradiusclient-ng" >&5
+echo $ECHO_N "checking for ${pbxfuncname} in -lradiusclient-ng... $ECHO_C" >&6; }
if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-llua5.1 ${pbxlibdir} $LIBS"
+LIBS="-lradiusclient-ng ${pbxlibdir} $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -41168,38 +41660,38 @@ ac_res=`eval echo '${'$as_ac_Lib'}'`
{ echo "$as_me:$LINENO: result: $ac_res" >&5
echo "${ECHO_T}$ac_res" >&6; }
if test `eval echo '${'$as_ac_Lib'}'` = yes; then
- AST_LUA_FOUND=yes
+ AST_RADIUS_FOUND=yes
else
- AST_LUA_FOUND=no
+ AST_RADIUS_FOUND=no
fi
fi
# now check for the header.
- if test "${AST_LUA_FOUND}" = "yes"; then
- LUA_LIB="${pbxlibdir} -llua5.1 "
- # if --with-LUA=DIR has been specified, use it.
- if test "x${LUA_DIR}" != "x"; then
- LUA_INCLUDE="-I${LUA_DIR}/include"
- fi
- LUA_INCLUDE="${LUA_INCLUDE} "
- if test "xlua5.1/lua.h" = "x" ; then # no header, assume found
- LUA_HEADER_FOUND="1"
+ if test "${AST_RADIUS_FOUND}" = "yes"; then
+ RADIUS_LIB="${pbxlibdir} -lradiusclient-ng "
+ # if --with-RADIUS=DIR has been specified, use it.
+ if test "x${RADIUS_DIR}" != "x"; then
+ RADIUS_INCLUDE="-I${RADIUS_DIR}/include"
+ fi
+ RADIUS_INCLUDE="${RADIUS_INCLUDE} "
+ if test "xradiusclient-ng.h" = "x" ; then # no header, assume found
+ RADIUS_HEADER_FOUND="1"
else # check for the header
saved_cppflags="${CPPFLAGS}"
- CPPFLAGS="${CPPFLAGS} ${LUA_INCLUDE} "
- if test "${ac_cv_header_lua5_1_lua_h+set}" = set; then
- { echo "$as_me:$LINENO: checking for lua5.1/lua.h" >&5
-echo $ECHO_N "checking for lua5.1/lua.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_lua5_1_lua_h+set}" = set; then
+ CPPFLAGS="${CPPFLAGS} ${RADIUS_INCLUDE} "
+ if test "${ac_cv_header_radiusclient_ng_h+set}" = set; then
+ { echo "$as_me:$LINENO: checking for radiusclient-ng.h" >&5
+echo $ECHO_N "checking for radiusclient-ng.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_radiusclient_ng_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_lua5_1_lua_h" >&5
-echo "${ECHO_T}$ac_cv_header_lua5_1_lua_h" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_header_radiusclient_ng_h" >&5
+echo "${ECHO_T}$ac_cv_header_radiusclient_ng_h" >&6; }
else
# Is the header compilable?
-{ echo "$as_me:$LINENO: checking lua5.1/lua.h usability" >&5
-echo $ECHO_N "checking lua5.1/lua.h usability... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: checking radiusclient-ng.h usability" >&5
+echo $ECHO_N "checking radiusclient-ng.h usability... $ECHO_C" >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -41207,7 +41699,7 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
-#include <lua5.1/lua.h>
+#include <radiusclient-ng.h>
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
@@ -41239,15 +41731,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
echo "${ECHO_T}$ac_header_compiler" >&6; }
# Is the header present?
-{ echo "$as_me:$LINENO: checking lua5.1/lua.h presence" >&5
-echo $ECHO_N "checking lua5.1/lua.h presence... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: checking radiusclient-ng.h presence" >&5
+echo $ECHO_N "checking radiusclient-ng.h presence... $ECHO_C" >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <lua5.1/lua.h>
+#include <radiusclient-ng.h>
_ACEOF
if { (ac_try="$ac_cpp conftest.$ac_ext"
case "(($ac_try" in
@@ -41280,25 +41772,25 @@ echo "${ECHO_T}$ac_header_preproc" >&6; }
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
yes:no: )
- { echo "$as_me:$LINENO: WARNING: lua5.1/lua.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: lua5.1/lua.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: lua5.1/lua.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: lua5.1/lua.h: proceeding with the compiler's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: radiusclient-ng.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: radiusclient-ng.h: proceeding with the compiler's result" >&2;}
ac_header_preproc=yes
;;
no:yes:* )
- { echo "$as_me:$LINENO: WARNING: lua5.1/lua.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: lua5.1/lua.h: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: lua5.1/lua.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: lua5.1/lua.h: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: lua5.1/lua.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: lua5.1/lua.h: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: lua5.1/lua.h: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: lua5.1/lua.h: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: lua5.1/lua.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: lua5.1/lua.h: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: lua5.1/lua.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: lua5.1/lua.h: in the future, the compiler will take precedence" >&2;}
+ { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: radiusclient-ng.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: radiusclient-ng.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: radiusclient-ng.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: radiusclient-ng.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: radiusclient-ng.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: radiusclient-ng.h: in the future, the compiler will take precedence" >&2;}
( cat <<\_ASBOX
## ------------------------------- ##
## Report this to www.asterisk.org ##
@@ -41307,43 +41799,43 @@ _ASBOX
) | sed "s/^/$as_me: WARNING: /" >&2
;;
esac
-{ echo "$as_me:$LINENO: checking for lua5.1/lua.h" >&5
-echo $ECHO_N "checking for lua5.1/lua.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_lua5_1_lua_h+set}" = set; then
+{ echo "$as_me:$LINENO: checking for radiusclient-ng.h" >&5
+echo $ECHO_N "checking for radiusclient-ng.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_radiusclient_ng_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- ac_cv_header_lua5_1_lua_h=$ac_header_preproc
+ ac_cv_header_radiusclient_ng_h=$ac_header_preproc
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_lua5_1_lua_h" >&5
-echo "${ECHO_T}$ac_cv_header_lua5_1_lua_h" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_header_radiusclient_ng_h" >&5
+echo "${ECHO_T}$ac_cv_header_radiusclient_ng_h" >&6; }
fi
-if test $ac_cv_header_lua5_1_lua_h = yes; then
- LUA_HEADER_FOUND=1
+if test $ac_cv_header_radiusclient_ng_h = yes; then
+ RADIUS_HEADER_FOUND=1
else
- LUA_HEADER_FOUND=0
+ RADIUS_HEADER_FOUND=0
fi
CPPFLAGS="${saved_cppflags}"
fi
- if test "x${LUA_HEADER_FOUND}" = "x0" ; then
- LUA_LIB=""
- LUA_INCLUDE=""
+ if test "x${RADIUS_HEADER_FOUND}" = "x0" ; then
+ RADIUS_LIB=""
+ RADIUS_INCLUDE=""
else
if test "x${pbxfuncname}" = "x" ; then # only checking headers -> no library
- LUA_LIB=""
+ RADIUS_LIB=""
fi
- PBX_LUA=1
+ PBX_RADIUS=1
# XXX don't know how to evaluate the description (third argument) in AC_DEFINE_UNQUOTED
cat >>confdefs.h <<_ACEOF
-#define HAVE_LUA 1
+#define HAVE_RADIUS 1
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define HAVE_LUA_VERSION
+#define HAVE_RADIUS_VERSION
_ACEOF
fi
@@ -41352,28 +41844,28 @@ fi
-if test "x${PBX_RADIUS}" != "x1" -a "${USE_RADIUS}" != "no"; then
+if test "x${PBX_SPANDSP}" != "x1" -a "${USE_SPANDSP}" != "no"; then
pbxlibdir=""
- # if --with-RADIUS=DIR has been specified, use it.
- if test "x${RADIUS_DIR}" != "x"; then
- if test -d ${RADIUS_DIR}/lib; then
- pbxlibdir="-L${RADIUS_DIR}/lib"
+ # if --with-SPANDSP=DIR has been specified, use it.
+ if test "x${SPANDSP_DIR}" != "x"; then
+ if test -d ${SPANDSP_DIR}/lib; then
+ pbxlibdir="-L${SPANDSP_DIR}/lib"
else
- pbxlibdir="-L${RADIUS_DIR}"
+ pbxlibdir="-L${SPANDSP_DIR}"
fi
fi
- pbxfuncname="rc_read_config"
+ pbxfuncname="fax_init"
if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
- AST_RADIUS_FOUND=yes
+ AST_SPANDSP_FOUND=yes
else
- as_ac_Lib=`echo "ac_cv_lib_radiusclient-ng_${pbxfuncname}" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for ${pbxfuncname} in -lradiusclient-ng" >&5
-echo $ECHO_N "checking for ${pbxfuncname} in -lradiusclient-ng... $ECHO_C" >&6; }
+ as_ac_Lib=`echo "ac_cv_lib_spandsp_${pbxfuncname}" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for ${pbxfuncname} in -lspandsp" >&5
+echo $ECHO_N "checking for ${pbxfuncname} in -lspandsp... $ECHO_C" >&6; }
if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lradiusclient-ng ${pbxlibdir} $LIBS"
+LIBS="-lspandsp ${pbxlibdir} -ltiff $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -41430,38 +41922,38 @@ ac_res=`eval echo '${'$as_ac_Lib'}'`
{ echo "$as_me:$LINENO: result: $ac_res" >&5
echo "${ECHO_T}$ac_res" >&6; }
if test `eval echo '${'$as_ac_Lib'}'` = yes; then
- AST_RADIUS_FOUND=yes
+ AST_SPANDSP_FOUND=yes
else
- AST_RADIUS_FOUND=no
+ AST_SPANDSP_FOUND=no
fi
fi
# now check for the header.
- if test "${AST_RADIUS_FOUND}" = "yes"; then
- RADIUS_LIB="${pbxlibdir} -lradiusclient-ng "
- # if --with-RADIUS=DIR has been specified, use it.
- if test "x${RADIUS_DIR}" != "x"; then
- RADIUS_INCLUDE="-I${RADIUS_DIR}/include"
- fi
- RADIUS_INCLUDE="${RADIUS_INCLUDE} "
- if test "xradiusclient-ng.h" = "x" ; then # no header, assume found
- RADIUS_HEADER_FOUND="1"
+ if test "${AST_SPANDSP_FOUND}" = "yes"; then
+ SPANDSP_LIB="${pbxlibdir} -lspandsp -ltiff"
+ # if --with-SPANDSP=DIR has been specified, use it.
+ if test "x${SPANDSP_DIR}" != "x"; then
+ SPANDSP_INCLUDE="-I${SPANDSP_DIR}/include"
+ fi
+ SPANDSP_INCLUDE="${SPANDSP_INCLUDE} "
+ if test "xspandsp.h" = "x" ; then # no header, assume found
+ SPANDSP_HEADER_FOUND="1"
else # check for the header
saved_cppflags="${CPPFLAGS}"
- CPPFLAGS="${CPPFLAGS} ${RADIUS_INCLUDE} "
- if test "${ac_cv_header_radiusclient_ng_h+set}" = set; then
- { echo "$as_me:$LINENO: checking for radiusclient-ng.h" >&5
-echo $ECHO_N "checking for radiusclient-ng.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_radiusclient_ng_h+set}" = set; then
+ CPPFLAGS="${CPPFLAGS} ${SPANDSP_INCLUDE} "
+ if test "${ac_cv_header_spandsp_h+set}" = set; then
+ { echo "$as_me:$LINENO: checking for spandsp.h" >&5
+echo $ECHO_N "checking for spandsp.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_spandsp_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_radiusclient_ng_h" >&5
-echo "${ECHO_T}$ac_cv_header_radiusclient_ng_h" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_header_spandsp_h" >&5
+echo "${ECHO_T}$ac_cv_header_spandsp_h" >&6; }
else
# Is the header compilable?
-{ echo "$as_me:$LINENO: checking radiusclient-ng.h usability" >&5
-echo $ECHO_N "checking radiusclient-ng.h usability... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: checking spandsp.h usability" >&5
+echo $ECHO_N "checking spandsp.h usability... $ECHO_C" >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
@@ -41469,7 +41961,7 @@ cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
-#include <radiusclient-ng.h>
+#include <spandsp.h>
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
@@ -41501,15 +41993,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
echo "${ECHO_T}$ac_header_compiler" >&6; }
# Is the header present?
-{ echo "$as_me:$LINENO: checking radiusclient-ng.h presence" >&5
-echo $ECHO_N "checking radiusclient-ng.h presence... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: checking spandsp.h presence" >&5
+echo $ECHO_N "checking spandsp.h presence... $ECHO_C" >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <radiusclient-ng.h>
+#include <spandsp.h>
_ACEOF
if { (ac_try="$ac_cpp conftest.$ac_ext"
case "(($ac_try" in
@@ -41542,25 +42034,25 @@ echo "${ECHO_T}$ac_header_preproc" >&6; }
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
yes:no: )
- { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: radiusclient-ng.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: radiusclient-ng.h: proceeding with the compiler's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: spandsp.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: spandsp.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: spandsp.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: spandsp.h: proceeding with the compiler's result" >&2;}
ac_header_preproc=yes
;;
no:yes:* )
- { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: radiusclient-ng.h: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: radiusclient-ng.h: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: radiusclient-ng.h: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: radiusclient-ng.h: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: radiusclient-ng.h: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: radiusclient-ng.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: radiusclient-ng.h: in the future, the compiler will take precedence" >&2;}
+ { echo "$as_me:$LINENO: WARNING: spandsp.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: spandsp.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: spandsp.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: spandsp.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: spandsp.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: spandsp.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: spandsp.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: spandsp.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: spandsp.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: spandsp.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: spandsp.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: spandsp.h: in the future, the compiler will take precedence" >&2;}
( cat <<\_ASBOX
## ------------------------------- ##
## Report this to www.asterisk.org ##
@@ -41569,43 +42061,43 @@ _ASBOX
) | sed "s/^/$as_me: WARNING: /" >&2
;;
esac
-{ echo "$as_me:$LINENO: checking for radiusclient-ng.h" >&5
-echo $ECHO_N "checking for radiusclient-ng.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_radiusclient_ng_h+set}" = set; then
+{ echo "$as_me:$LINENO: checking for spandsp.h" >&5
+echo $ECHO_N "checking for spandsp.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_spandsp_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- ac_cv_header_radiusclient_ng_h=$ac_header_preproc
+ ac_cv_header_spandsp_h=$ac_header_preproc
fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_radiusclient_ng_h" >&5
-echo "${ECHO_T}$ac_cv_header_radiusclient_ng_h" >&6; }
+{ echo "$as_me:$LINENO: result: $ac_cv_header_spandsp_h" >&5
+echo "${ECHO_T}$ac_cv_header_spandsp_h" >&6; }
fi
-if test $ac_cv_header_radiusclient_ng_h = yes; then
- RADIUS_HEADER_FOUND=1
+if test $ac_cv_header_spandsp_h = yes; then
+ SPANDSP_HEADER_FOUND=1
else
- RADIUS_HEADER_FOUND=0
+ SPANDSP_HEADER_FOUND=0
fi
CPPFLAGS="${saved_cppflags}"
fi
- if test "x${RADIUS_HEADER_FOUND}" = "x0" ; then
- RADIUS_LIB=""
- RADIUS_INCLUDE=""
+ if test "x${SPANDSP_HEADER_FOUND}" = "x0" ; then
+ SPANDSP_LIB=""
+ SPANDSP_INCLUDE=""
else
if test "x${pbxfuncname}" = "x" ; then # only checking headers -> no library
- RADIUS_LIB=""
+ SPANDSP_LIB=""
fi
- PBX_RADIUS=1
+ PBX_SPANDSP=1
# XXX don't know how to evaluate the description (third argument) in AC_DEFINE_UNQUOTED
cat >>confdefs.h <<_ACEOF
-#define HAVE_RADIUS 1
+#define HAVE_SPANDSP 1
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define HAVE_RADIUS_VERSION
+#define HAVE_SPANDSP_VERSION
_ACEOF
fi
@@ -49918,6 +50410,126 @@ fi
+PBX_LIBEDIT=0
+LIBEDIT_INCLUDE=-Ieditline/readline
+LIBEDIT_LIB=
+LIBEDIT_OBJ=editline/libedit.a
+if test "${USE_LIBEDIT}" != "no"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_PKGCONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$PKGCONFIG"; then
+ ac_cv_prog_PKGCONFIG="$PKGCONFIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_PKGCONFIG="${ac_tool_prefix}pkg-config"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+PKGCONFIG=$ac_cv_prog_PKGCONFIG
+if test -n "$PKGCONFIG"; then
+ { echo "$as_me:$LINENO: result: $PKGCONFIG" >&5
+echo "${ECHO_T}$PKGCONFIG" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_PKGCONFIG"; then
+ ac_ct_PKGCONFIG=$PKGCONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_PKGCONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_PKGCONFIG"; then
+ ac_cv_prog_ac_ct_PKGCONFIG="$ac_ct_PKGCONFIG" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_PKGCONFIG="pkg-config"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_PKGCONFIG=$ac_cv_prog_ac_ct_PKGCONFIG
+if test -n "$ac_ct_PKGCONFIG"; then
+ { echo "$as_me:$LINENO: result: $ac_ct_PKGCONFIG" >&5
+echo "${ECHO_T}$ac_ct_PKGCONFIG" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_PKGCONFIG" = x; then
+ PKGCONFIG="no"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKGCONFIG=$ac_ct_PKGCONFIG
+ fi
+else
+ PKGCONFIG="$ac_cv_prog_PKGCONFIG"
+fi
+
+ if test "${PKGCONFIG}" != "no"; then
+ if ${PKGCONFIG} --exists libedit; then
+ LIBEDIT_INCLUDE=$(${PKGCONFIG} libedit --cflags)
+ LIBEDIT_LIB=$(${PKGCONFIG} libedit --libs)
+ LIBEDIT_OBJ=
+ PBX_LIBEDIT=1
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBEDIT 1
+_ACEOF
+
+ fi
+ fi
+fi
+
+
+
+
+
if test "${USE_CURL}" != "no"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}curl-config", so it can be a program name with args.
@@ -50892,14 +51504,18 @@ BKTR_LIB!$BKTR_LIB$ac_delim
BKTR_INCLUDE!$BKTR_INCLUDE$ac_delim
BKTR_DIR!$BKTR_DIR$ac_delim
PBX_BKTR!$PBX_BKTR$ac_delim
-CAP_LIB!$CAP_LIB$ac_delim
-CAP_INCLUDE!$CAP_INCLUDE$ac_delim
-CAP_DIR!$CAP_DIR$ac_delim
-PBX_CAP!$PBX_CAP$ac_delim
+BLUETOOTH_LIB!$BLUETOOTH_LIB$ac_delim
+BLUETOOTH_INCLUDE!$BLUETOOTH_INCLUDE$ac_delim
+BLUETOOTH_DIR!$BLUETOOTH_DIR$ac_delim
+PBX_BLUETOOTH!$PBX_BLUETOOTH$ac_delim
CURL_LIB!$CURL_LIB$ac_delim
CURL_INCLUDE!$CURL_INCLUDE$ac_delim
CURL_DIR!$CURL_DIR$ac_delim
PBX_CURL!$PBX_CURL$ac_delim
+CAP_LIB!$CAP_LIB$ac_delim
+CAP_INCLUDE!$CAP_INCLUDE$ac_delim
+CAP_DIR!$CAP_DIR$ac_delim
+PBX_CAP!$PBX_CAP$ac_delim
CURSES_LIB!$CURSES_LIB$ac_delim
CURSES_INCLUDE!$CURSES_INCLUDE$ac_delim
CURSES_DIR!$CURSES_DIR$ac_delim
@@ -50952,6 +51568,10 @@ LDAP_LIB!$LDAP_LIB$ac_delim
LDAP_INCLUDE!$LDAP_INCLUDE$ac_delim
LDAP_DIR!$LDAP_DIR$ac_delim
PBX_LDAP!$PBX_LDAP$ac_delim
+LIBEDIT_LIB!$LIBEDIT_LIB$ac_delim
+LIBEDIT_INCLUDE!$LIBEDIT_INCLUDE$ac_delim
+LIBEDIT_DIR!$LIBEDIT_DIR$ac_delim
+PBX_LIBEDIT!$PBX_LIBEDIT$ac_delim
LTDL_LIB!$LTDL_LIB$ac_delim
LTDL_INCLUDE!$LTDL_INCLUDE$ac_delim
LTDL_DIR!$LTDL_DIR$ac_delim
@@ -50969,14 +51589,6 @@ NBS_INCLUDE!$NBS_INCLUDE$ac_delim
NBS_DIR!$NBS_DIR$ac_delim
PBX_NBS!$PBX_NBS$ac_delim
NCURSES_LIB!$NCURSES_LIB$ac_delim
-NCURSES_INCLUDE!$NCURSES_INCLUDE$ac_delim
-NCURSES_DIR!$NCURSES_DIR$ac_delim
-PBX_NCURSES!$PBX_NCURSES$ac_delim
-NETSNMP_LIB!$NETSNMP_LIB$ac_delim
-NETSNMP_INCLUDE!$NETSNMP_INCLUDE$ac_delim
-NETSNMP_DIR!$NETSNMP_DIR$ac_delim
-PBX_NETSNMP!$PBX_NETSNMP$ac_delim
-NEWT_LIB!$NEWT_LIB$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -51018,6 +51630,14 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
+NCURSES_INCLUDE!$NCURSES_INCLUDE$ac_delim
+NCURSES_DIR!$NCURSES_DIR$ac_delim
+PBX_NCURSES!$PBX_NCURSES$ac_delim
+NETSNMP_LIB!$NETSNMP_LIB$ac_delim
+NETSNMP_INCLUDE!$NETSNMP_INCLUDE$ac_delim
+NETSNMP_DIR!$NETSNMP_DIR$ac_delim
+PBX_NETSNMP!$PBX_NETSNMP$ac_delim
+NEWT_LIB!$NEWT_LIB$ac_delim
NEWT_INCLUDE!$NEWT_INCLUDE$ac_delim
NEWT_DIR!$NEWT_DIR$ac_delim
PBX_NEWT!$PBX_NEWT$ac_delim
@@ -51077,6 +51697,10 @@ SDL_IMAGE_LIB!$SDL_IMAGE_LIB$ac_delim
SDL_IMAGE_INCLUDE!$SDL_IMAGE_INCLUDE$ac_delim
SDL_IMAGE_DIR!$SDL_IMAGE_DIR$ac_delim
PBX_SDL_IMAGE!$PBX_SDL_IMAGE$ac_delim
+SPANDSP_LIB!$SPANDSP_LIB$ac_delim
+SPANDSP_INCLUDE!$SPANDSP_INCLUDE$ac_delim
+SPANDSP_DIR!$SPANDSP_DIR$ac_delim
+PBX_SPANDSP!$PBX_SPANDSP$ac_delim
SPEEX_LIB!$SPEEX_LIB$ac_delim
SPEEX_INCLUDE!$SPEEX_INCLUDE$ac_delim
SPEEX_DIR!$SPEEX_DIR$ac_delim
@@ -51103,18 +51727,6 @@ OPENSSL_DIR!$OPENSSL_DIR$ac_delim
PBX_OPENSSL!$PBX_OPENSSL$ac_delim
FREETDS_LIB!$FREETDS_LIB$ac_delim
FREETDS_INCLUDE!$FREETDS_INCLUDE$ac_delim
-FREETDS_DIR!$FREETDS_DIR$ac_delim
-PBX_FREETDS!$PBX_FREETDS$ac_delim
-TERMCAP_LIB!$TERMCAP_LIB$ac_delim
-TERMCAP_INCLUDE!$TERMCAP_INCLUDE$ac_delim
-TERMCAP_DIR!$TERMCAP_DIR$ac_delim
-PBX_TERMCAP!$PBX_TERMCAP$ac_delim
-TINFO_LIB!$TINFO_LIB$ac_delim
-TINFO_INCLUDE!$TINFO_INCLUDE$ac_delim
-TINFO_DIR!$TINFO_DIR$ac_delim
-PBX_TINFO!$PBX_TINFO$ac_delim
-TONEZONE_LIB!$TONEZONE_LIB$ac_delim
-TONEZONE_INCLUDE!$TONEZONE_INCLUDE$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -51156,6 +51768,18 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
+FREETDS_DIR!$FREETDS_DIR$ac_delim
+PBX_FREETDS!$PBX_FREETDS$ac_delim
+TERMCAP_LIB!$TERMCAP_LIB$ac_delim
+TERMCAP_INCLUDE!$TERMCAP_INCLUDE$ac_delim
+TERMCAP_DIR!$TERMCAP_DIR$ac_delim
+PBX_TERMCAP!$PBX_TERMCAP$ac_delim
+TINFO_LIB!$TINFO_LIB$ac_delim
+TINFO_INCLUDE!$TINFO_INCLUDE$ac_delim
+TINFO_DIR!$TINFO_DIR$ac_delim
+PBX_TINFO!$PBX_TINFO$ac_delim
+TONEZONE_LIB!$TONEZONE_LIB$ac_delim
+TONEZONE_INCLUDE!$TONEZONE_INCLUDE$ac_delim
TONEZONE_DIR!$TONEZONE_DIR$ac_delim
PBX_TONEZONE!$PBX_TONEZONE$ac_delim
USB_LIB!$USB_LIB$ac_delim
@@ -51209,6 +51833,7 @@ OPENH323_INCDIR!$OPENH323_INCDIR$ac_delim
OPENH323_LIBDIR!$OPENH323_LIBDIR$ac_delim
OPENH323_SUFFIX!$OPENH323_SUFFIX$ac_delim
OPENH323_BUILD!$OPENH323_BUILD$ac_delim
+PKGCONFIG!$PKGCONFIG$ac_delim
PBX_SPEEX_PREPROCESS!$PBX_SPEEX_PREPROCESS$ac_delim
CONFIG_GMIME!$CONFIG_GMIME$ac_delim
PBX_ZAPTEL_VLDTMF!$PBX_ZAPTEL_VLDTMF$ac_delim
@@ -51222,12 +51847,12 @@ PBX_H323!$PBX_H323$ac_delim
PBX_IXJUSER!$PBX_IXJUSER$ac_delim
CONFIG_SDL!$CONFIG_SDL$ac_delim
CONFIG_GTK!$CONFIG_GTK$ac_delim
-PKGCONFIG!$PKGCONFIG$ac_delim
+LIBEDIT_OBJ!$LIBEDIT_OBJ$ac_delim
CURL_CONFIG!$CURL_CONFIG$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 69; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 82; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in
index b368c8d..07deb31 100644
--- a/include/asterisk/autoconfig.h.in
+++ b/include/asterisk/autoconfig.h.in
@@ -116,6 +116,12 @@
/* Define to indicate the ${BKTR_DESCRIP} library version */
#undef HAVE_BKTR_VERSION
+/* Define this to indicate the ${BLUETOOTH_DESCRIP} library */
+#undef HAVE_BLUETOOTH
+
+/* Define to indicate the ${BLUETOOTH_DESCRIP} library version */
+#undef HAVE_BLUETOOTH_VERSION
+
/* Define to 1 if byteswap.h macros are available. */
#undef HAVE_BYTESWAP_H
@@ -385,6 +391,9 @@
/* Define to indicate the ${LDAP_DESCRIP} library version */
#undef HAVE_LDAP_VERSION
+/* Define if your system has the NetBSD Editline libraries. */
+#undef HAVE_LIBEDIT
+
/* Define to 1 if you have the <libintl.h> header file. */
#undef HAVE_LIBINTL_H
@@ -442,12 +451,9 @@
/* Define to indicate the ${LTDL_DESCRIP} library version */
#undef HAVE_LTDL_VERSION
-/* Define this to indicate the ${LUA_DESCRIP} library */
+/* Define if your system has the LUA libraries. */
#undef HAVE_LUA
-/* Define to indicate the ${LUA_DESCRIP} library version */
-#undef HAVE_LUA_VERSION
-
/* Define to 1 if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H
@@ -715,6 +721,12 @@
/* Define to 1 if your system has soxmix application. */
#undef HAVE_SOXMIX
+/* Define this to indicate the ${SPANDSP_DESCRIP} library */
+#undef HAVE_SPANDSP
+
+/* Define to indicate the ${SPANDSP_DESCRIP} library version */
+#undef HAVE_SPANDSP_VERSION
+
/* Define this to indicate the ${SPEEX_DESCRIP} library */
#undef HAVE_SPEEX
--
1.5.4.3
asterisk-1.6.0-beta9-chanmobile.patch:
--- NEW FILE asterisk-1.6.0-beta9-chanmobile.patch ---
>From 0aa79a48dde6096a7a88a58ba3f326cb41471862 Mon Sep 17 00:00:00 2001
From: Jeffrey C. Ollie <jeff at ocjtech.us>
Date: Mon, 25 Feb 2008 09:23:28 -0600
Subject: [PATCH] Add chan_mobile from asterisk-addons.
---
build_tools/menuselect-deps.in | 1 +
channels/Makefile | 2 +
channels/chan_mobile.c | 2118 ++++++++++++++++++++++++++++++++++++++++
configs/mobile.conf.sample | 60 ++
configure.ac | 4 +
doc/chan_mobile.txt | 240 +++++
makeopts.in | 3 +
7 files changed, 2428 insertions(+), 0 deletions(-)
create mode 100644 channels/chan_mobile.c
create mode 100644 configs/mobile.conf.sample
create mode 100644 doc/chan_mobile.txt
diff --git a/build_tools/menuselect-deps.in b/build_tools/menuselect-deps.in
index 6067076..c25e5d2 100644
--- a/build_tools/menuselect-deps.in
+++ b/build_tools/menuselect-deps.in
@@ -1,5 +1,6 @@
ASOUND=@PBX_ALSA@
CRYPTO=@PBX_CRYPTO@
+BLUETOOTH=@PBX_BLUETOOTH@
CURL=@PBX_CURL@
FREETDS=@PBX_FREETDS@
GMIME=@PBX_GMIME@
diff --git a/channels/Makefile b/channels/Makefile
index 34bd8e0..d8e691a 100644
--- a/channels/Makefile
+++ b/channels/Makefile
@@ -101,3 +101,5 @@ misdn/isdn_lib.o: ASTCFLAGS+=-Wno-strict-aliasing
$(if $(filter chan_misdn,$(EMBEDDED_MODS)),modules.link,chan_misdn.so): misdn_config.o misdn/isdn_lib.o misdn/isdn_msg_parser.o
$(if $(filter chan_oss,$(EMBEDDED_MODS)),modules.link,chan_oss.so): console_video.o vgrabbers.o console_board.o
+
+chan_mobile.so: LIBS+=$(BLUETOOTH_LIB)
diff --git a/channels/chan_mobile.c b/channels/chan_mobile.c
new file mode 100644
index 0000000..1312ea9
--- /dev/null
+++ b/channels/chan_mobile.c
@@ -0,0 +1,2118 @@
+/*
+ * Asterisk -- An open source telephony toolkit.
+ *
+ * Copyright (C) 1999 - 2006, Digium, Inc.
+ *
+ * Mark Spencer <markster at digium.com>
+ *
+ * See http://www.asterisk.org for more information about
+ * the Asterisk project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2. See the LICENSE file
+ * at the top of the source tree.
+ */
+
+/*! \file
+ *
+ * \brief Bluetooth Mobile Device channel driver
+ *
+ * \author Dave Bowerman <david.bowerman at gmail.com>
+ *
+ * \ingroup channel_drivers
+ */
+
+/*** MODULEINFO
+ <depend>bluetooth</depend>
+ ***/
+
+#include <asterisk.h>
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+#include <errno.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <arpa/inet.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <signal.h>
+
+#include <bluetooth/bluetooth.h>
+#include <bluetooth/hci.h>
+#include <bluetooth/hci_lib.h>
+#include <bluetooth/sdp.h>
+#include <bluetooth/sdp_lib.h>
+#include <bluetooth/rfcomm.h>
+#include <bluetooth/sco.h>
+#include <bluetooth/l2cap.h>
+
+#include <asterisk/lock.h>
+#include <asterisk/channel.h>
+#include <asterisk/config.h>
+#include <asterisk/logger.h>
+#include <asterisk/module.h>
+#include <asterisk/pbx.h>
+#include <asterisk/options.h>
+#include <asterisk/utils.h>
+#include <asterisk/linkedlists.h>
+#include <asterisk/cli.h>
+#include <asterisk/devicestate.h>
+#include <asterisk/causes.h>
+#include <asterisk/dsp.h>
+#include <asterisk/app.h>
+#include <asterisk/manager.h>
+
+#define MBL_CONFIG "mobile.conf"
+
+#define DEVICE_FRAME_SIZE 48
+#define DEVICE_FRAME_FORMAT AST_FORMAT_SLINEAR
+#define CHANNEL_FRAME_SIZE 320
+
+static int prefformat = DEVICE_FRAME_FORMAT;
+
+static int discovery_interval = 60; /* The device discovery interval, default 60 seconds. */
+static pthread_t discovery_thread = AST_PTHREADT_NULL; /* The discovery thread */
+static sdp_session_t *sdp_session;
+
+enum mbl_type {
+ MBL_TYPE_PHONE,
+ MBL_TYPE_HEADSET
+};
+
+enum mbl_state {
+ MBL_STATE_INIT = 0,
+ MBL_STATE_INIT1,
+ MBL_STATE_INIT2,
+ MBL_STATE_INIT3,
+ MBL_STATE_INIT4,
+ MBL_STATE_INIT5,
+ MBL_STATE_INIT6,
+ MBL_STATE_INIT7,
+ MBL_STATE_PREIDLE,
+ MBL_STATE_IDLE,
+ MBL_STATE_DIAL,
+ MBL_STATE_DIAL1,
+ MBL_STATE_OUTGOING,
+ MBL_STATE_RING,
+ MBL_STATE_RING2,
+ MBL_STATE_RING3,
+ MBL_STATE_INCOMING,
+ MBL_STATE_HANGUP,
+ MBL_STATE_INSMS,
+ MBL_STATE_OUTSMS,
+ MBL_STATE_OUTSMS1,
+ MBL_STATE_OUTSMS2
+};
+
+struct adapter_pvt {
+ int dev_id; /* device id */
+ int hci_socket; /* device descriptor */
+ char id[31]; /* the 'name' from mobile.conf */
+ bdaddr_t addr; /* adddress of adapter */
+ unsigned int inuse:1; /* are we in use ? */
+ unsigned int alignment_detection:1; /* do alignment detection on this adpater? */
+ int sco_socket;
+ AST_LIST_ENTRY(adapter_pvt) entry;
+};
+
+static AST_LIST_HEAD_STATIC(adapters, adapter_pvt);
+
+struct mbl_pvt {
+ struct ast_channel *owner; /* Channel we belong to, possibly NULL */
+ struct ast_frame fr; /* "null" frame */
+ enum mbl_type type; /* Phone or Headset */
+ char id[31]; /* The id from mobile.conf */
+ int group; /* group number for group dialling */
+ bdaddr_t addr; /* address of device */
+ struct adapter_pvt *adapter; /* the adapter we use */
+ char context[AST_MAX_CONTEXT]; /* the context for incoming calls */
+ char connected; /* is it connected? */
+ int rfcomm_port; /* rfcomm port number */
+ int rfcomm_socket; /* rfcomm socket descriptor */
+ char rfcomm_buf[256];
+ char io_buf[CHANNEL_FRAME_SIZE + AST_FRIENDLY_OFFSET];
+ char io_save_buf[DEVICE_FRAME_SIZE];
+ int io_save_len;
+ int io_pipe[2];
+ int sco_socket; /* sco socket descriptor */
+ pthread_t sco_listener_thread; /* inbound sco listener for this device */
+ enum mbl_state state; /* monitor thread current state */
+ pthread_t monitor_thread; /* monitor thread handle */
+ char dial_number[AST_MAX_EXTENSION]; /* number for the monitor thread to dial */
+ int dial_timeout;
+ char ciev_call_0[4]; /* dynamically built reponse strings */
+ char ciev_call_1[4];
+ char ciev_callsetup_0[4];
+ char ciev_callsetup_1[4];
[...2115 lines suppressed...]
+
+See configs/mobile.conf.sample for an example and an explanation of the configuration.
+
+
+Using chan_mobile :-
+
+chan_mobile.so must be loaded either by loading it using the Asterisk CLI, or by adding it to /etc/asterisk/modules.conf
+
+Search for your bluetooth devices using the CLI command 'mobile search'. Be patient with this command as
+it will take 8 - 10 seconds to do the discovery. This requires a free adapter.
+
+Headsets will generally have to be put into 'pairing' mode before they will show up here.
+
+This will return something like the following :-
+
+*CLI> mobile search
+Address Name Usable Type Port
+00:12:56:90:6E:00 LG TU500 Yes Phone 4
+00:80:C8:35:52:78 Toaster No Headset 0
+00:0B:9E:11:74:A5 Hello II Plus Yes Headset 1
+00:0F:86:0E:AE:42 Daves Blackberry Yes Phone 7
+
+This is a list of all bluetooth devices seen and whether or not they are usable with chan_mobile.
+The Address field contains the 'bd address' of the device. This is like an ethernet mac address.
+The Name field is whatever is configured into the device as its name.
+The Usable field tells you whether or not the device supports the Bluetooth Handsfree Profile or Headset profile.
+The Type field tells you whether the device is usable as a Phone line (FXO) or a headset (FXS)
+The Port field is the number to put in the configuration file.
+
+Choose which device(s) you want to use and edit /etc/asterisk/mobile.conf. There is a sample included
+with the Asterisk-addons source under configs/mobile.conf.sample.
+
+Be sure to configure the right bd address and port number from the search. If you want inbound
+calls on a device to go to a specific context, add a context= line, otherwise the default will
+be used. The 'id' of the device [bitinbrackets] can be anything you like, just make it unique.
+
+If you are configuring a Headset be sure to include the type=headset line, if left out it defaults
+to phone.
+
+The CLI command 'mobile show devices' can be used at any time to show the status of configured devices,
+and whether or not the device is capable of sending / receiving SMS via bluetooth.
+
+*CLI> mobile show devices
+ID Address Group Adapter Connected State SMS
+headset 00:0B:9E:11:AE:C6 0 blue No Init No
+LGTU550 00:E0:91:7F:46:44 1 dlink No Init No
+*CLI>
+
+As each phone is connected you will see a message on the Asterisk console :-
+
+ Loaded chan_mobile.so => (Bluetooth Mobile Device Channel Driver)
+ -- Bluetooth Device blackberry has connected.
+ -- Bluetooth Device dave has connected.
+
+To make outbound calls, add something to you Dialplan like the following :- (modify to suit)
+
+; Calls via LGTU5500
+exten => _9X.,1,Dial(Mobile/LGTU550/${EXTEN:1},45)
+exten => _9X.,n,Hangup
+
+To use channel groups, add an entry to each phones definition in mobile.conf like group=n
+where n is a number.
+
+Then if you do something like Dial(Mobile/g1/123456) Asterisk will dial 123456 on the first
+connected free phone in group 1.
+
+Phones which do not have a specific 'group=n' will be in group 0.
+
+
+To dial out on a headset, you need to use some other mechanism, because the headset is not likely
+to have all the needed buttons on it. res_clioriginate is good for this :-
+
+*CLI> originate Mobile/headset extension NNNNN at context
+
+This will call your headset, once you answer, Asterisk will call NNNNN at context context
+
+Dialplan hints :-
+
+chan_mobile supports 'device status' so you can do somthing like
+
+exten => 1234,hint,SIP/30&Mobile/dave&Mobile/blackberry
+
+
+MobileStatus Application :-
+
+chan_mobile also registers an application named MobileStatus. You can use this in your Dialplan
+to determine the 'state' of a device.
+
+For example, suppose you wanted to call dave's extension, but only if he was in the office. You could
+test to see if his mobile phone was attached to Asterisk, if it is dial his extension, otherwise dial his
+mobile phone.
+
+exten => 40,1,MobileStatus(dave,DAVECELL)
+exten => 40,2,GotoIf($["${DAVECELL}" = "1"]?3:5)
+exten => 40,3,Dial(ZAP/g1/0427466412,45,tT)
+exten => 40,4,Hangup
+exten => 40,5,Dial(SIP/40,45,tT)
+exten => 40,6,Hangup
+
+MobileStatus sets the value of the given variable to :-
+
+1 = Disconnected. i.e. Device not in range of Asterisk, or turned off etc etc
+2 = Connected and Not on a call. i.e. Free
+3 = Connected and on a call. i.e. Busy
+
+
+SMS Sending / Receiving
+
+If Asterisk has detected your mobile phone is capable of SMS via bluetooth, you will be able to send and
+receive SMS.
+
+Incoming SMS's cause Asterisk to create an inbound call to the context you defined in mobile.conf or the default
+context if you did not define one. The call will start at extension 'sms'. Two channel variables will be available,
+SMSSRC = the number of the originator of the SMS and SMSTXT which is the text of the SMS.
+This is not a voice call, so grab the values of the variables and hang the call up.
+
+So, to handle incoming SMS's, do something like the following in your dialplan
+
+[incoming-mobile]
+exten => sms,1,Verbose(Incoming SMS from ${SMSSRC} ${SMSTXT})
+exten => sms,n,Hangup()
+
+The above will just print the message on the console.
+
+If you use res_jabber, you could do something like this :-
+
+[incoming-mobile]
+exten => sms,1,JabberSend(transport,user at jabber.somewhere.com,SMS from ${SMSRC} ${SMSTXT})
+exten => sms,2,Hangup()
+
+To send an SMS, use the application MobileSendSMS like the following :-
+
+exten => 99,1,MobileSendSMS(dave,0427123456,Hello World)
+
+This will send 'Hello World' via device 'dave' to '0427123456'
+
+
+DTMF Debouncing :-
+
+DTMF detection varies from phone to phone. There is a configuration variable that allows you to tune
+this to your needs. e.g. in mobile.conf
+
+[LGTU550]
+address=00:12:56:90:6E:00
+port=4
+context=incoming-mobile
+dtmfskip=50
+
+change dtmfskip to suit your phone. The default is 200. The larger the number, the more chance of missed DTMF.
+The smaller the number the more chance of multiple digits being detected.
+
+
+Debugging :-
+
+Different phone manufacturers have different interpretations of the Bluetooth Handsfree Profile Spec.
+This means that not all phones work the same way, particularly in the connection setup / initialisation
+sequence. I've tried to make chan_mobile as general as possible, but it may need modification to
+support some phone i've never tested.
+
+Some phones, most notably Sony Ericsson 'T' series, dont quite conform to the Bluetooth HFP spec.
+chan_mobile will detect these and adapt accordingly. The T-610 and T-630 have been tested and
+work fine.
+
+If your phone doesnt behave has expected, turn on Asterisk debugging with 'core set debug 1'.
+
+This will log a bunch of debug messages indicating what the phone is doing, importantly the rfcomm
+conversation between Asterisk and the phone. This can be used to sort out what your phone is doing
+and make chan_mobile support it.
+
+Be aware also, that just about all mobile phones behave differently. For example my LG TU500 wont dial unless
+the phone is a the 'idle' screen. i.e. if the phone is showing a 'menu' on the display, when you dial via
+Asterisk, the call will not work. chan_mobile handles this, but there may be other phones that do
+other things too...
+
+Important: Watch what your mobile phone is doing the first few times. Asterisk wont make random calls but
+if chan_mobile fails to hangup for some reason and you get a huge bill from your telco, dont blame me ;)
+
+
+Feedback, Support, Please can you make Mobile Phone X work... etc :-
+
+as always, bugs should be reported at http://bugs.digium.com
+
+email me at david.bowerman at gmail.com or dseeb_ on #asterisk & #asterisk-dev irc.
diff --git a/makeopts.in b/makeopts.in
index 3d564b7..a394c18 100644
--- a/makeopts.in
+++ b/makeopts.in
@@ -69,6 +69,9 @@ AST_NO_STRICT_OVERFLOW=@AST_NO_STRICT_OVERFLOW@
ASOUND_INCLUDE=@ALSA_INCLUDE@
ASOUND_LIB=@ALSA_LIB@
+BLUETOOTH_LIB=@BLUETOOTH_LIB@
+BLUETOOTH_INCLUDE=@BLUETOOTH_INCLUDE@
+
CURL_INCLUDE=@CURL_INCLUDE@
CURL_LIB=@CURL_LIB@
--
1.5.4.3
asterisk-1.6.0-beta9-editline.patch:
--- NEW FILE asterisk-1.6.0-beta9-editline.patch ---
>From 1d203925b0707b4f47c0150e6eff4a375fcdb3c5 Mon Sep 17 00:00:00 2001
From: Jeffrey C. Ollie <jeff at ocjtech.us>
Date: Tue, 25 Mar 2008 00:50:27 -0500
Subject: [PATCH] Build using external libedit.
---
build_tools/menuselect-deps.in | 1 +
configure.ac | 22 ++++++++++++++++++++++
main/Makefile | 7 ++++---
main/cli.c | 3 ++-
makeopts.in | 4 ++++
5 files changed, 33 insertions(+), 4 deletions(-)
diff --git a/build_tools/menuselect-deps.in b/build_tools/menuselect-deps.in
index c25e5d2..e50e64e 100644
--- a/build_tools/menuselect-deps.in
+++ b/build_tools/menuselect-deps.in
@@ -16,6 +16,7 @@ ISDNNET=@PBX_ISDNNET@
IXJUSER=@PBX_IXJUSER@
JACK=@PBX_JACK@
LDAP=@PBX_LDAP@
+LIBEDIT=@PBX_LIBEDIT@
LTDL=@PBX_LTDL@
LUA=@PBX_LUA@
MISDN=@PBX_MISDN@
diff --git a/configure.ac b/configure.ac
index 2da38f1..c514e10 100644
--- a/configure.ac
+++ b/configure.ac
@@ -220,6 +220,7 @@ AST_EXT_LIB_SETUP([IMAP_TK], [UW IMAP Toolkit], [imap])
AST_EXT_LIB_SETUP([ISDNNET], [ISDN4Linux Library], [isdnnet])
AST_EXT_LIB_SETUP([JACK], [Jack Audio Connection Kit], [jack])
AST_EXT_LIB_SETUP([LDAP], [OpenLDAP], [ldap])
+AST_EXT_LIB_SETUP([LIBEDIT], [NetBSD Editline library], [libedit])
AST_EXT_LIB_SETUP([LTDL], [libtool], [ltdl])
AST_EXT_LIB_SETUP([LUA], [Lua], [lua])
AST_EXT_LIB_SETUP([MISDN], [mISDN User Library], [misdn])
@@ -1571,6 +1572,27 @@ AC_SUBST(PBX_GTK2)
AC_SUBST(GTK2_INCLUDE)
AC_SUBST(GTK2_LIB)
+PBX_LIBEDIT=0
+LIBEDIT_INCLUDE=-Ieditline/readline
+LIBEDIT_LIB=
+LIBEDIT_OBJ=editline/libedit.a
+if test "${USE_LIBEDIT}" != "no"; then
+ AC_CHECK_TOOL(PKGCONFIG, pkg-config, no)
+ if test "${PKGCONFIG}" != "no"; then
+ if ${PKGCONFIG} --exists libedit; then
+ LIBEDIT_INCLUDE=$(${PKGCONFIG} libedit --cflags)
+ LIBEDIT_LIB=$(${PKGCONFIG} libedit --libs)
+ LIBEDIT_OBJ=
+ PBX_LIBEDIT=1
+ AC_DEFINE([HAVE_LIBEDIT], 1, [Define if your system has the NetBSD Editline libraries.])
+ fi
+ fi
+fi
+AC_SUBST(PBX_LIBEDIT)
+AC_SUBST(LIBEDIT_INCLUDE)
+AC_SUBST(LIBEDIT_LIB)
+AC_SUBST(LIBEDIT_OBJ)
+
if test "${USE_CURL}" != "no"; then
AC_PATH_TOOL([CURL_CONFIG], [curl-config], No)
if test ! x"${CURL_CONFIG}" = xNo; then
diff --git a/main/Makefile b/main/Makefile
index 976c37b..09c5eb6 100644
--- a/main/Makefile
+++ b/main/Makefile
@@ -133,6 +133,7 @@ testexpr2: ast_expr2f.c ast_expr2.c ast_expr2.h
channel.o: ASTCFLAGS+=$(ZAPTEL_INCLUDE)
asterisk.o: ASTCFLAGS+=$(ZAPTEL_INCLUDE)
+cli.o: ASTCFLAGS+=$(LIBEDIT_INCLUDE)
ifneq ($(findstring ENABLE_UPLOADS,$(MENUSELECT_CFLAGS)),)
http.o: ASTCFLAGS+=$(GMIME_INCLUDE)
@@ -166,13 +167,13 @@ ifneq ($(findstring ENABLE_UPLOADS,$(MENUSELECT_CFLAGS)),)
GMIMELDFLAGS+=$(GMIME_LIB)
endif
-$(MAIN_TGT): $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS)
+$(MAIN_TGT): $(OBJS) $(LIBEDIT_OBJ) db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS)
@$(CC) -c -o buildinfo.o $(ASTCFLAGS) buildinfo.c
$(ECHO_PREFIX) echo " [LD] $^ -> $@"
ifneq ($(findstring chan_h323,$(MENUSELECT_CHANNELS)),)
- $(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(ASTLDFLAGS) $^ buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(GMIMELDFLAGS)
+ $(CMD_PREFIX) $(CC) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(ASTLDFLAGS) $^ buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(GMIMELDFLAGS) $(LIBEDIT_LIB)
else
- $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(ASTLDFLAGS) $(H323LDFLAGS) $^ buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(H323LDLIBS) $(GMIMELDFLAGS)
+ $(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(ASTLINK) $(AST_EMBED_LDFLAGS) $(ASTLDFLAGS) $(H323LDFLAGS) $^ buildinfo.o $(AST_LIBS) $(AST_EMBED_LIBS) $(H323LDLIBS) $(GMIMELDFLAGS) $(LIBEDIT_LIB)
endif
$(CMD_PREFIX) $(ASTTOPDIR)/build_tools/strip_nonapi $@ || rm $@
diff --git a/main/cli.c b/main/cli.c
index 11d6671..dce7950 100644
--- a/main/cli.c
+++ b/main/cli.c
@@ -34,6 +34,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include <ctype.h>
#include <regex.h>
+#include <readline.h>
+
#include "asterisk/cli.h"
#include "asterisk/linkedlists.h"
#include "asterisk/module.h"
@@ -42,7 +44,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/utils.h"
#include "asterisk/app.h"
#include "asterisk/lock.h"
-#include "editline/readline/readline.h"
#include "asterisk/threadstorage.h"
/*!
diff --git a/makeopts.in b/makeopts.in
index a394c18..ad7a94d 100644
--- a/makeopts.in
+++ b/makeopts.in
@@ -238,3 +238,7 @@ TINFO_DIR=@TINFO_DIR@
# if poll is not present, let the makefile know.
POLL_AVAILABLE=@HAS_POLL@
+
+LIBEDIT_INCLUDE=@LIBEDIT_INCLUDE@
+LIBEDIT_LIB=@LIBEDIT_LIB@
+LIBEDIT_OBJ=@LIBEDIT_OBJ@
--
1.5.4.3
asterisk-1.6.0-beta9-initscripts.patch:
--- NEW FILE asterisk-1.6.0-beta9-initscripts.patch ---
>From 4b1248e7e51595760d8e4da1f87fa3bfce43140f Mon Sep 17 00:00:00 2001
From: Jeffrey C. Ollie <jeff at ocjtech.us>
Date: Sun, 18 Nov 2007 21:47:59 -0600
Subject: [PATCH] Modify init scripts for better Fedora compatibility.
---
contrib/init.d/rc.redhat.asterisk | 59 +++++++++++++++++-------------------
contrib/sysconfig/asterisk | 16 ++++++++++
2 files changed, 44 insertions(+), 31 deletions(-)
create mode 100644 contrib/sysconfig/asterisk
diff --git a/contrib/init.d/rc.redhat.asterisk b/contrib/init.d/rc.redhat.asterisk
index de821fe..ddb1d64 100755
--- a/contrib/init.d/rc.redhat.asterisk
+++ b/contrib/init.d/rc.redhat.asterisk
@@ -3,7 +3,7 @@
#
# asterisk Starts, Stops and Reloads Asterisk.
#
-# chkconfig: 2345 90 60
+# chkconfig: - 90 60
# description: Asterisk PBX and telephony daemon.
# processname: asterisk
# pidfile: /var/run/asterisk.pid
@@ -20,51 +20,51 @@
# - Added support for -U and -G command line options
# - Modified "reload" to call asterisk -rx 'reload'
-# Use this option to specify a different configuration directory
-#AST_CONFIG=/etc/asterisk
+# Do not modify this script to change any of the settings, instead
+# edit /etc/sysconfig/asterisk
+
+# Specify the configuration file
+AST_CONFIG=/etc/asterisk/asterisk.conf
# Installation directory
AST_SBIN=/usr/sbin
-# Uncomment the following and set them to the user/groups that you
-# want to run Asterisk as. NOTE: this requires substantial work to
-# be sure that Asterisk's environment has permission to write the
-# files required for its operation, including logs, its comm
-# socket, the asterisk database, etc.
-#AST_USER="asterisk"
+# The user that Asterisk will run as.
+AST_USER="asterisk"
+
+# If a user is specified above, Asterisk will change the group it runs
+# as to the primary group of the user, as well as initialize the
+# supplementary groups. If you want to run Asterisk as a different
+# group, set AST_GROUP to the group that Asterisk should run as. Note
+# that this may break Zaptel devices as supplementary groups will not
+# be initialized.
#AST_GROUP="asterisk"
-# Source function library.
-. /etc/rc.d/init.d/functions
+# Allow configuration overrides in /etc/sysconfig/asterisk
+CONFIG0=`readlink $0`
+if [ "$CONFIG0" = "" ]; then
+ CONFIGFILE=/etc/sysconfig/`basename $0`
+else
+ CONFIGFILE=/etc/sysconfig/`basename $CONFIG0`
+fi
+[ -f $CONFIGFILE ] && . $CONFIGFILE
if ! [ -x $AST_SBIN/asterisk ] ; then
echo "ERROR: $AST_SBIN/asterisk not found"
exit 0
fi
-if ! [ -d $AST_CONFIG ] ; then
- echo "ERROR: $AST_CONFIG directory not found"
+if ! [ -f $AST_CONFIG ] ; then
+ echo "ERROR: $AST_CONFIG not found"
exit 0
fi
-# Uncomment this ONLY if you know what you are doing.
-# export LD_ASSUME_KERNEL=2.4.1
+# Source function library.
+. /etc/rc.d/init.d/functions
# Full path to asterisk binary
DAEMON=$AST_SBIN/asterisk
-# Full path to safe_asterisk script
-SAFE_ASTERISK=$AST_SBIN/safe_asterisk
-
-# Allow configuration overrides in /etc/sysconfig/asterisk
-CONFIG0=`readlink $0`
-if [ "$CONFIG0" = "" ]; then
- CONFIGFILE=/etc/sysconfig/`basename $0`
-else
- CONFIGFILE=/etc/sysconfig/`basename $CONFIG0`
-fi
-[ -x $CONFIGFILE ] && . $CONFIGFILE
-
RETVAL=0
start() {
@@ -78,9 +78,6 @@ start() {
# Start daemons.
echo -n $"Starting asterisk: "
- if [ -f $SAFE_ASTERISK ] ; then
- DAEMON=$SAFE_ASTERISK
- fi
if [ $AST_USER ] ; then
ASTARGS="-U $AST_USER"
fi
@@ -99,7 +96,7 @@ start() {
stop() {
# Stop daemons.
- echo -n $"Shutting down asterisk: "
+ echo -n $"Stopping asterisk: "
killproc asterisk
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/asterisk
diff --git a/contrib/sysconfig/asterisk b/contrib/sysconfig/asterisk
new file mode 100644
index 0000000..2d3598a
--- /dev/null
+++ b/contrib/sysconfig/asterisk
@@ -0,0 +1,16 @@
+# Specify the configuration file
+AST_CONFIG=/etc/asterisk/asterisk.conf
+
+# Installation directory
+AST_SBIN=/usr/sbin
+
+# The user that Asterisk will run as.
+AST_USER="asterisk"
+
+# If a user is specified above, Asterisk will change the group it runs
+# as to the primary group of the user, as well as initialize the
+# supplementary groups. If you want to run Asterisk as a different
+# group, set AST_GROUP to the group that Asterisk should run as. Note
+# that this may break Zaptel devices as supplementary groups will not
+# be initialized.
+#AST_GROUP="asterisk"
--
1.5.4.3
asterisk-1.6.0-beta9-lua.patch:
--- NEW FILE asterisk-1.6.0-beta9-lua.patch ---
>From 7040e603015f6fa33b495b57c491ac53fa712629 Mon Sep 17 00:00:00 2001
From: Jeffrey C. Ollie <jeff at ocjtech.us>
Date: Mon, 25 Feb 2008 13:14:23 -0600
Subject: [PATCH] Use pkgconfig to check for Lua.
---
configure.ac | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/configure.ac b/configure.ac
index b2a8051..2da38f1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1332,9 +1332,14 @@ if test "${PBX_PWLIB}" = "1" -a "${USE_OPENH323}" != "no" ; then
[${PWLIB_INCLUDE}], [${PWLIB_LIB}])
fi
-LUA_INCLUDE="-I/usr/include/lua5.1"
-LUA_LIB="-llua5.1"
-AST_EXT_LIB_CHECK([LUA], [lua5.1], [luaL_newstate], [lua5.1/lua.h])
+PBX_LUA=0
+AC_CHECK_TOOL(PKGCONFIG, pkg-config, No)
+if test ! "x${PKGCONFIG}" = xNo; then
+ LUA_INCLUDE=$(${PKGCONFIG} lua --cflags 2>/dev/null)
+ LUA_LIB=$(${PKGCONFIG} lua --libs 2>/dev/null)
+ PBX_LUA=1
+ AC_DEFINE([HAVE_LUA], 1, [Define if your system has the LUA libraries.])
+fi
AST_EXT_LIB_CHECK([RADIUS], [radiusclient-ng], [rc_read_config], [radiusclient-ng.h])
--
1.5.4.3
asterisk-1.6.0-beta9-optimization.patch:
--- NEW FILE asterisk-1.6.0-beta9-optimization.patch ---
>From fad1f5ce41d6c52ce143ec1b40d02c6018a5ada3 Mon Sep 17 00:00:00 2001
From: Jeffrey C. Ollie <jcollie at pc21224.campus.dmacc.edu>
Date: Thu, 8 Nov 2007 16:42:14 -0600
Subject: [PATCH] Pick proper optimization flags for Fedora.
---
Makefile | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/Makefile b/Makefile
index 7c44b41..a9fd366 100644
--- a/Makefile
+++ b/Makefile
@@ -221,10 +221,16 @@ ifeq ($(OSARCH),linux-gnu)
endif
ifeq ($(findstring -save-temps,$(ASTCFLAGS)),)
-ASTCFLAGS+=-pipe
+ ifeq ($(findstring -pipe,$(ASTCFLAGS)),)
+ ASTCFLAGS+=-pipe
+ endif
+endif
+
+ifeq ($(findstring -Wall,$(ASTCFLAGS)),)
+ ASTCFLAGS+=-Wall
endif
-ASTCFLAGS+=-Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG)
+ASTCFLAGS+=-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG)
ASTCFLAGS+=-include $(ASTTOPDIR)/include/asterisk/autoconfig.h
@@ -237,8 +243,10 @@ ifneq ($(findstring BSD,$(OSARCH)),)
ASTLDFLAGS+=-L/usr/local/lib
endif
-ifneq ($(PROC),ultrasparc)
- ASTCFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
+ifeq ($(findstring -march,$(ASTCFLAGS)),)
+ ifneq ($(PROC),ultrasparc)
+ ASTCFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
+ endif
endif
ifeq ($(PROC),ppc)
--
1.5.4.3
asterisk-1.6.0-beta9-spandspfax.patch:
--- NEW FILE asterisk-1.6.0-beta9-spandspfax.patch ---
>From 8b16680232f737490ae8d1289ca14db6cc885d9d Mon Sep 17 00:00:00 2001
From: Jeffrey C. Ollie <jeff at ocjtech.us>
Date: Mon, 12 Nov 2007 15:51:12 -0600
Subject: [PATCH] Add FAX apps.
---
apps/app_rxfax.c | 380 ++++++++++++++++++++++++++++++++++++++++
apps/app_txfax.c | 306 ++++++++++++++++++++++++++++++++
build_tools/menuselect-deps.in | 1 +
configure.ac | 3 +
makeopts.in | 3 +
5 files changed, 693 insertions(+), 0 deletions(-)
create mode 100644 apps/app_rxfax.c
create mode 100644 apps/app_txfax.c
diff --git a/apps/app_rxfax.c b/apps/app_rxfax.c
new file mode 100644
index 0000000..bd81ea1
--- /dev/null
+++ b/apps/app_rxfax.c
@@ -0,0 +1,380 @@
+/*
+ * Asterisk -- A telephony toolkit for Linux.
+ *
+ * Trivial application to receive a TIFF FAX file
+ *
+ * Copyright (C) 2003, Steve Underwood
+ *
+ * Steve Underwood <steveu at coppice.org>
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License
+ */
+
+/*** MODULEINFO
+ <depend>spandsp</depend>
+***/
+
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision:$")
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <inttypes.h>
+#include <pthread.h>
+#include <errno.h>
+#include <tiffio.h>
+
+#include <spandsp.h>
+
+#include "asterisk/lock.h"
+#include "asterisk/file.h"
+#include "asterisk/logger.h"
+#include "asterisk/channel.h"
+#include "asterisk/pbx.h"
+#include "asterisk/module.h"
+#include "asterisk/manager.h"
+
+#ifndef AST_MODULE
+#define AST_MODULE "app_rxfax"
+#endif
+
+static char *app = "RxFAX";
+
+static char *synopsis = "Receive a FAX to a file";
+
+static char *descrip =
+" RxFAX(filename[|caller][|debug]): Receives a FAX from the channel into the\n"
+"given filename. If the file exists it will be overwritten. The file\n"
+"should be in TIFF/F format.\n"
+"The \"caller\" option makes the application behave as a calling machine,\n"
+"rather than the answering machine. The default behaviour is to behave as\n"
+"an answering machine.\n"
+"Uses LOCALSTATIONID to identify itself to the remote end.\n"
+" LOCALHEADERINFO to generate a header line on each page.\n"
+"Sets REMOTESTATIONID to the sender CSID.\n"
+" FAXPAGES to the number of pages received.\n"
+" FAXBITRATE to the transmition rate.\n"
+" FAXRESOLUTION to the resolution.\n"
+"Returns -1 when the user hangs up.\n"
+"Returns 0 otherwise.\n";
+
+#define MAX_BLOCK_SIZE 240
+
+static void span_message(int level, const char *msg)
+{
+ int ast_level;
+
+ if (level == SPAN_LOG_WARNING)
+ ast_level = __LOG_WARNING;
+ else if (level == SPAN_LOG_WARNING)
+ ast_level = __LOG_WARNING;
+ else
+ ast_level = __LOG_DEBUG;
+ ast_log(ast_level, __FILE__, __LINE__, __PRETTY_FUNCTION__, msg);
+}
+/*- End of function --------------------------------------------------------*/
+
+#if 0
+static void t30_flush(t30_state_t *s, int which)
+{
+ /* TODO: */
+}
+/*- End of function --------------------------------------------------------*/
+#endif
+
+static void phase_e_handler(t30_state_t *s, void *user_data, int result)
+{
+ struct ast_channel *chan;
+ t30_stats_t t;
+ char local_ident[21];
+ char far_ident[21];
+ char buf[11];
+
+ chan = (struct ast_channel *) user_data;
+ if (result == T30_ERR_OK)
+ {
+ t30_get_transfer_statistics(s, &t);
+ t30_get_far_ident(s, far_ident);
+ t30_get_local_ident(s, local_ident);
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ ast_log(LOG_DEBUG, "Fax successfully received.\n");
+ ast_log(LOG_DEBUG, "Remote station id: %s\n", far_ident);
+ ast_log(LOG_DEBUG, "Local station id: %s\n", local_ident);
+ ast_log(LOG_DEBUG, "Pages transferred: %i\n", t.pages_transferred);
+ ast_log(LOG_DEBUG, "Image resolution: %i x %i\n", t.x_resolution, t.y_resolution);
+ ast_log(LOG_DEBUG, "Transfer Rate: %i\n", t.bit_rate);
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ manager_event(EVENT_FLAG_CALL,
+ "FaxReceived", "Channel: %s\nExten: %s\nCallerID: %s\nRemoteStationID: %s\nLocalStationID: %s\nPagesTransferred: %i\nResolution: %i\nTransferRate: %i\nFileName: %s\n",
+ chan->name,
+ chan->exten,
+ (chan->cid.cid_num) ? chan->cid.cid_num : "",
+ far_ident,
+ local_ident,
+ t.pages_transferred,
+ t.y_resolution,
+ t.bit_rate,
+ s->rx_file);
+ pbx_builtin_setvar_helper(chan, "REMOTESTATIONID", far_ident);
+ snprintf(buf, sizeof(buf), "%i", t.pages_transferred);
+ pbx_builtin_setvar_helper(chan, "FAXPAGES", buf);
+ snprintf(buf, sizeof(buf), "%i", t.y_resolution);
+ pbx_builtin_setvar_helper(chan, "FAXRESOLUTION", buf);
+ snprintf(buf, sizeof(buf), "%i", t.bit_rate);
+ pbx_builtin_setvar_helper(chan, "FAXBITRATE", buf);
+ }
+ else
+ {
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ ast_log(LOG_DEBUG, "Fax receive not successful - result (%d) %s.\n", result, t30_completion_code_to_str(result));
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ }
+}
+/*- End of function --------------------------------------------------------*/
+
+static void phase_d_handler(t30_state_t *s, void *user_data, int result)
+{
+ struct ast_channel *chan;
+ t30_stats_t t;
+
+ chan = (struct ast_channel *) user_data;
+ if (result)
+ {
+ t30_get_transfer_statistics(s, &t);
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ ast_log(LOG_DEBUG, "Pages transferred: %i\n", t.pages_transferred);
+ ast_log(LOG_DEBUG, "Image size: %i x %i\n", t.width, t.length);
+ ast_log(LOG_DEBUG, "Image resolution %i x %i\n", t.x_resolution, t.y_resolution);
+ ast_log(LOG_DEBUG, "Transfer Rate: %i\n", t.bit_rate);
+ ast_log(LOG_DEBUG, "Bad rows %i\n", t.bad_rows);
+ ast_log(LOG_DEBUG, "Longest bad row run %i\n", t.longest_bad_row_run);
+ ast_log(LOG_DEBUG, "Compression type %i\n", t.encoding);
+ ast_log(LOG_DEBUG, "Image size (bytes) %i\n", t.image_size);
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ }
+}
+/*- End of function --------------------------------------------------------*/
+
+static int rxfax_exec(struct ast_channel *chan, void *data)
+{
+ int res = 0;
+ char template_file[256];
+ char target_file[256];
+ char *s;
+ char *t;
+ char *v;
+ const char *x;
+ int option;
+ int len;
+ int i;
+ fax_state_t fax;
+ int calling_party;
+ int verbose;
+ int samples;
+
+ struct ast_module_user *u;
+ struct ast_frame *inf = NULL;
+ struct ast_frame outf;
+
+ int original_read_fmt;
+ int original_write_fmt;
+
+ uint8_t __buf[sizeof(uint16_t)*MAX_BLOCK_SIZE + 2*AST_FRIENDLY_OFFSET];
+ uint8_t *buf = __buf + AST_FRIENDLY_OFFSET;
+
+ if (chan == NULL)
+ {
+ ast_log(LOG_WARNING, "Fax receive channel is NULL. Giving up.\n");
+ return -1;
+ }
+
+ span_set_message_handler(span_message);
+
+ /* The next few lines of code parse out the filename and header from the input string */
+ if (data == NULL)
+ {
+ /* No data implies no filename or anything is present */
+ ast_log(LOG_WARNING, "Rxfax requires an argument (filename)\n");
+ return -1;
+ }
+
+ calling_party = FALSE;
+ verbose = FALSE;
+ target_file[0] = '\0';
+
+ for (option = 0, v = s = data; v; option++, s++)
+ {
+ t = s;
+ v = strchr(s, '|');
+ s = (v) ? v : s + strlen(s);
+ strncpy((char *) buf, t, s - t);
+ buf[s - t] = '\0';
+ if (option == 0)
+ {
+ /* The first option is always the file name */
+ len = s - t;
+ if (len > 255)
+ len = 255;
+ strncpy(target_file, t, len);
+ target_file[len] = '\0';
+ /* Allow the use of %d in the file name for a wild card of sorts, to
+ create a new file with the specified name scheme */
+ if ((x = strchr(target_file, '%')) && x[1] == 'd')
+ {
+ strcpy(template_file, target_file);
+ i = 0;
+ do
+ {
+ snprintf(target_file, 256, template_file, 1);
+ i++;
+ }
+ while (ast_fileexists(target_file, "", chan->language) != -1);
+ }
+ }
+ else if (strncmp("caller", t, s - t) == 0)
+ {
+ calling_party = TRUE;
+ }
+ else if (strncmp("debug", t, s - t) == 0)
+ {
+ verbose = TRUE;
+ }
+ }
+
+ /* Done parsing */
+
+ u = ast_module_user_add(chan);
+
+ if (chan->_state != AST_STATE_UP)
+ {
+ /* Shouldn't need this, but checking to see if channel is already answered
+ * Theoretically asterisk should already have answered before running the app */
+ res = ast_answer(chan);
+ }
+
+ if (!res)
+ {
+ original_read_fmt = chan->readformat;
+ if (original_read_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
+ if (res < 0)
+ {
+ ast_log(LOG_WARNING, "Unable to set to linear read mode, giving up\n");
+ return -1;
+ }
+ }
+ original_write_fmt = chan->writeformat;
+ if (original_write_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_write_format(chan, AST_FORMAT_SLINEAR);
+ if (res < 0)
+ {
+ ast_log(LOG_WARNING, "Unable to set to linear write mode, giving up\n");
+ res = ast_set_read_format(chan, original_read_fmt);
+ if (res)
+ ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
+ return -1;
+ }
+ }
+ fax_init(&fax, calling_party);
+ if (verbose)
+ fax.logging.level = SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW;
+ x = pbx_builtin_getvar_helper(chan, "LOCALSTATIONID");
+ if (x && x[0])
+ t30_set_local_ident(&fax.t30_state, x);
+ x = pbx_builtin_getvar_helper(chan, "LOCALHEADERINFO");
+ if (x && x[0])
+ t30_set_header_info(&fax.t30_state, x);
+ t30_set_rx_file(&fax.t30_state, target_file, -1);
+ //t30_set_phase_b_handler(&fax.t30_state, phase_b_handler, chan);
+ t30_set_phase_d_handler(&fax.t30_state, phase_d_handler, chan);
+ t30_set_phase_e_handler(&fax.t30_state, phase_e_handler, chan);
+ t30_set_ecm_capability(&fax.t30_state, TRUE);
+ t30_set_supported_compressions(&fax.t30_state, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION);
+ while (ast_waitfor(chan, -1) > -1)
+ {
+ inf = ast_read(chan);
+ if (inf == NULL)
+ {
+ res = -1;
+ break;
+ }
+ if (inf->frametype == AST_FRAME_VOICE)
+ {
+ if (fax_rx(&fax, inf->data, inf->samples))
+ break;
+ samples = (inf->samples <= MAX_BLOCK_SIZE) ? inf->samples : MAX_BLOCK_SIZE;
+ len = fax_tx(&fax, (int16_t *) &buf[AST_FRIENDLY_OFFSET], samples);
+ if (len)
+ {
+ memset(&outf, 0, sizeof(outf));
+ outf.frametype = AST_FRAME_VOICE;
+ outf.subclass = AST_FORMAT_SLINEAR;
+ outf.datalen = len*sizeof(int16_t);
+ outf.samples = len;
+ outf.data = &buf[AST_FRIENDLY_OFFSET];
+ outf.offset = AST_FRIENDLY_OFFSET;
+ outf.src = "RxFAX";
+ if (ast_write(chan, &outf) < 0)
+ {
+ ast_log(LOG_WARNING, "Unable to write frame to channel; %s\n", strerror(errno));
+ break;
+ }
+ }
+ }
+ ast_frfree(inf);
+ }
+ if (inf == NULL)
+ {
+ ast_log(LOG_DEBUG, "Got hangup\n");
+ res = -1;
+ }
+ if (original_read_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_read_format(chan, original_read_fmt);
+ if (res)
+ ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
+ }
+ if (original_write_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_write_format(chan, original_write_fmt);
+ if (res)
+ ast_log(LOG_WARNING, "Unable to restore write format on '%s'\n", chan->name);
+ }
+ t30_terminate(&fax.t30_state);
+ }
+ else
+ {
+ ast_log(LOG_WARNING, "Could not answer channel '%s'\n", chan->name);
+ }
+ ast_module_user_remove(u);
+ return res;
+}
+/*- End of function --------------------------------------------------------*/
+
+static int unload_module(void)
+{
+ int res;
+
+ ast_module_user_hangup_all();
+
+ res = ast_unregister_application(app);
+
+
+ return res;
+}
+/*- End of function --------------------------------------------------------*/
+
+static int load_module(void)
+{
+ return ast_register_application(app, rxfax_exec, synopsis, descrip);
+}
+/*- End of function --------------------------------------------------------*/
+
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Trivial FAX Receive Application");
+
+/*- End of file ------------------------------------------------------------*/
diff --git a/apps/app_txfax.c b/apps/app_txfax.c
new file mode 100644
index 0000000..713ecf1
--- /dev/null
+++ b/apps/app_txfax.c
@@ -0,0 +1,306 @@
+/*
+ * Asterisk -- A telephony toolkit for Linux.
+ *
+ * Trivial application to send a TIFF file as a FAX
+ *
+ * Copyright (C) 2003, Steve Underwood
+ *
+ * Steve Underwood <steveu at coppice.org>
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License
+ */
+
+/*** MODULEINFO
+ <depend>spandsp</depend>
+***/
+
+#include "asterisk.h"
+
+ASTERISK_FILE_VERSION(__FILE__, "$Revision:$")
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <inttypes.h>
+#include <pthread.h>
+#include <errno.h>
+#include <tiffio.h>
+
+#include <spandsp.h>
+
+#include "asterisk/lock.h"
+#include "asterisk/file.h"
+#include "asterisk/logger.h"
+#include "asterisk/channel.h"
+#include "asterisk/pbx.h"
+#include "asterisk/module.h"
+
+#ifndef AST_MODULE
+#define AST_MODULE "app_txfax"
+#endif
+
+static char *app = "TxFAX";
+
+static char *synopsis = "Send a FAX file";
+
+static char *descrip =
+" TxFAX(filename[|caller][|debug]): Send a given TIFF file to the channel as a FAX.\n"
+"The \"caller\" option makes the application behave as a calling machine,\n"
+"rather than the answering machine. The default behaviour is to behave as\n"
+"an answering machine.\n"
+"Uses LOCALSTATIONID to identify itself to the remote end.\n"
+" LOCALHEADERINFO to generate a header line on each page.\n"
+"Sets REMOTESTATIONID to the receiver CSID.\n"
+"Returns -1 when the user hangs up, or if the file does not exist.\n"
+"Returns 0 otherwise.\n";
+
+#define MAX_BLOCK_SIZE 240
+
+static void span_message(int level, const char *msg)
+{
+ int ast_level;
+
+ if (level == SPAN_LOG_WARNING)
+ ast_level = __LOG_WARNING;
+ else if (level == SPAN_LOG_WARNING)
+ ast_level = __LOG_WARNING;
+ else
+ ast_level = __LOG_DEBUG;
+ ast_log(ast_level, __FILE__, __LINE__, __PRETTY_FUNCTION__, msg);
+}
+/*- End of function --------------------------------------------------------*/
+
+#if 0
+static void t30_flush(t30_state_t *s, int which)
+{
+ /* TODO: */
+}
+/*- End of function --------------------------------------------------------*/
+#endif
+
+static void phase_e_handler(t30_state_t *s, void *user_data, int result)
+{
+ struct ast_channel *chan;
+ char far_ident[21];
+
+ chan = (struct ast_channel *) user_data;
+ if (result == T30_ERR_OK)
+ {
+ t30_get_far_ident(s, far_ident);
+ pbx_builtin_setvar_helper(chan, "REMOTESTATIONID", far_ident);
+ }
+ else
+ {
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ ast_log(LOG_DEBUG, "Fax send not successful - result (%d) %s.\n", result, t30_completion_code_to_str(result));
+ ast_log(LOG_DEBUG, "==============================================================================\n");
+ }
+}
+/*- End of function --------------------------------------------------------*/
+
+static int txfax_exec(struct ast_channel *chan, void *data)
+{
+ int res = 0;
+ char source_file[256];
+ char *s;
+ char *t;
+ char *v;
+ const char *x;
+ int option;
+ int len;
+ fax_state_t fax;
+ int calling_party;
+ int verbose;
+ int samples;
+
+ struct ast_module_user *u;
+ struct ast_frame *inf = NULL;
+ struct ast_frame outf;
+
+ int original_read_fmt;
+ int original_write_fmt;
+
+ uint8_t __buf[sizeof(uint16_t)*MAX_BLOCK_SIZE + 2*AST_FRIENDLY_OFFSET];
+ uint8_t *buf = __buf + AST_FRIENDLY_OFFSET;
+
+ if (chan == NULL)
+ {
+ ast_log(LOG_WARNING, "Fax transmit channel is NULL. Giving up.\n");
+ return -1;
+ }
+
+ span_set_message_handler(span_message);
+
+ /* The next few lines of code parse out the filename and header from the input string */
+ if (data == NULL)
+ {
+ /* No data implies no filename or anything is present */
+ ast_log(LOG_WARNING, "Txfax requires an argument (filename)\n");
+ return -1;
+ }
+
+ calling_party = FALSE;
+ verbose = FALSE;
+ source_file[0] = '\0';
+
+ for (option = 0, v = s = data; v; option++, s++)
+ {
+ t = s;
+ v = strchr(s, '|');
+ s = (v) ? v : s + strlen(s);
+ strncpy((char *) buf, t, s - t);
+ buf[s - t] = '\0';
+ if (option == 0)
+ {
+ /* The first option is always the file name */
+ len = s - t;
+ if (len > 255)
+ len = 255;
+ strncpy(source_file, t, len);
+ source_file[len] = '\0';
+ }
+ else if (strncmp("caller", t, s - t) == 0)
+ {
+ calling_party = TRUE;
+ }
+ else if (strncmp("debug", t, s - t) == 0)
+ {
+ verbose = TRUE;
+ }
+ }
+
+ /* Done parsing */
+
+ u = ast_module_user_add(chan);
+
+ if (chan->_state != AST_STATE_UP)
+ {
+ /* Shouldn't need this, but checking to see if channel is already answered
+ * Theoretically asterisk should already have answered before running the app */
+ res = ast_answer(chan);
+ }
+
+ if (!res)
+ {
+ original_read_fmt = chan->readformat;
+ if (original_read_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
+ if (res < 0)
+ {
+ ast_log(LOG_WARNING, "Unable to set to linear read mode, giving up\n");
+ return -1;
+ }
+ }
+ original_write_fmt = chan->writeformat;
+ if (original_write_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_write_format(chan, AST_FORMAT_SLINEAR);
+ if (res < 0)
+ {
+ ast_log(LOG_WARNING, "Unable to set to linear write mode, giving up\n");
+ res = ast_set_read_format(chan, original_read_fmt);
+ if (res)
+ ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
+ return -1;
+ }
+ }
+ fax_init(&fax, calling_party);
+ if (verbose)
+ fax.logging.level = SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW;
+
+ x = pbx_builtin_getvar_helper(chan, "LOCALSTATIONID");
+ if (x && x[0])
+ t30_set_local_ident(&fax.t30_state, x);
+ x = pbx_builtin_getvar_helper(chan, "LOCALHEADERINFO");
+ if (x && x[0])
+ t30_set_header_info(&fax.t30_state, x);
+ t30_set_tx_file(&fax.t30_state, source_file, -1, -1);
+ //t30_set_phase_b_handler(&fax.t30_state, phase_b_handler, chan);
+ //t30_set_phase_d_handler(&fax.t30_state, phase_d_handler, chan);
+ t30_set_phase_e_handler(&fax.t30_state, phase_e_handler, chan);
+ t30_set_ecm_capability(&fax.t30_state, TRUE);
+ t30_set_supported_compressions(&fax.t30_state, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION);
+ while (ast_waitfor(chan, -1) > -1)
+ {
+ inf = ast_read(chan);
+ if (inf == NULL)
+ {
+ res = -1;
+ break;
+ }
+ if (inf->frametype == AST_FRAME_VOICE)
+ {
+ if (fax_rx(&fax, inf->data, inf->samples))
+ break;
+ samples = (inf->samples <= MAX_BLOCK_SIZE) ? inf->samples : MAX_BLOCK_SIZE;
+ len = fax_tx(&fax, (int16_t *) &buf[AST_FRIENDLY_OFFSET], samples);
+ if (len)
+ {
+ memset(&outf, 0, sizeof(outf));
+ outf.frametype = AST_FRAME_VOICE;
+ outf.subclass = AST_FORMAT_SLINEAR;
+ outf.datalen = len*sizeof(int16_t);
+ outf.samples = len;
+ outf.data = &buf[AST_FRIENDLY_OFFSET];
+ outf.offset = AST_FRIENDLY_OFFSET;
+ if (ast_write(chan, &outf) < 0)
+ {
+ ast_log(LOG_WARNING, "Unable to write frame to channel; %s\n", strerror(errno));
+ break;
+ }
+ }
+ }
+ ast_frfree(inf);
+ }
+ if (inf == NULL)
+ {
+ ast_log(LOG_DEBUG, "Got hangup\n");
+ res = -1;
+ }
+ if (original_read_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_read_format(chan, original_read_fmt);
+ if (res)
+ ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
+ }
+ if (original_write_fmt != AST_FORMAT_SLINEAR)
+ {
+ res = ast_set_write_format(chan, original_write_fmt);
+ if (res)
+ ast_log(LOG_WARNING, "Unable to restore write format on '%s'\n", chan->name);
+ }
+ t30_terminate(&fax.t30_state);
+ }
+ else
+ {
+ ast_log(LOG_WARNING, "Could not answer channel '%s'\n", chan->name);
+ }
+ ast_module_user_remove(u);
+ return res;
+}
+/*- End of function --------------------------------------------------------*/
+
+static int unload_module(void)
+{
+ int res;
+
+ ast_module_user_hangup_all();
+
+ res = ast_unregister_application(app);
+
+
+ return res;
+}
+/*- End of function --------------------------------------------------------*/
+
+static int load_module(void)
+{
+ return ast_register_application(app, txfax_exec, synopsis, descrip);
+}
+/*- End of function --------------------------------------------------------*/
+
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Trivial FAX Transmit Application");
+
+/*- End of file ------------------------------------------------------------*/
diff --git a/build_tools/menuselect-deps.in b/build_tools/menuselect-deps.in
index aa76d56..6067076 100644
--- a/build_tools/menuselect-deps.in
+++ b/build_tools/menuselect-deps.in
@@ -30,6 +30,7 @@ POPT=@PBX_POPT@
PORTAUDIO=@PBX_PORTAUDIO@
PRI=@PBX_PRI@
RADIUS=@PBX_RADIUS@
+SPANDSP=@PBX_SPANDSP@
SPEEX=@PBX_SPEEX@
SPEEXDSP=@PBX_SPEEXDSP@
SPEEX_PREPROCESS=@PBX_SPEEX_PREPROCESS@
diff --git a/configure.ac b/configure.ac
index 63f0376..ae671ec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -239,6 +239,7 @@ AST_EXT_LIB_SETUP([OPENH323], [OpenH323], [h323])
AST_EXT_LIB_SETUP([RADIUS], [Radius Client], [radius])
AST_EXT_LIB_SETUP([SDL], [Sdl], [sdl])
AST_EXT_LIB_SETUP([SDL_IMAGE], [Sdl Image library], [SDL_image])
+AST_EXT_LIB_SETUP([SPANDSP], [spandsp Library], [spandsp])
AST_EXT_LIB_SETUP([SPEEX], [Speex], [speex])
AST_EXT_LIB_SETUP([SPEEXDSP], [Speexdsp], [speexdsp])
AST_EXT_LIB_SETUP([SQLITE], [SQLite], [sqlite])
@@ -1333,6 +1334,8 @@ AST_EXT_LIB_CHECK([LUA], [lua5.1], [luaL_newstate], [lua5.1/lua.h])
AST_EXT_LIB_CHECK([RADIUS], [radiusclient-ng], [rc_read_config], [radiusclient-ng.h])
+AST_EXT_LIB_CHECK([SPANDSP], [spandsp], [fax_init], [spandsp.h], [-ltiff])
+
AST_EXT_LIB_CHECK([SPEEX], [speex], [speex_encode], [speex/speex.h], [-lm])
# See if the main speex library contains the preprocess functions
diff --git a/makeopts.in b/makeopts.in
index 3bf203e..3d564b7 100644
--- a/makeopts.in
+++ b/makeopts.in
@@ -169,6 +169,9 @@ SDL_LIB=@SDL_LIB@
SDL_IMAGE_INCLUDE=@SDL_IMAGE_INCLUDE@
SDL_IMAGE_LIB=@SDL_IMAGE_LIB@
+SPANDSP_INCLUDE=@SPANDSP_INCLUDE@
+SPANDSP_LIB=@SPANDSP_LIB@
+
SPEEX_INCLUDE=@SPEEX_INCLUDE@
SPEEX_LIB=@SPEEX_LIB@
--
1.5.4.3
Index: asterisk.spec
===================================================================
RCS file: /cvs/pkgs/rpms/asterisk/F-9/asterisk.spec,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- asterisk.spec 23 Apr 2008 02:52:46 -0000 1.24
+++ asterisk.spec 19 May 2008 15:41:04 -0000 1.25
@@ -1,10 +1,10 @@
%define with_apidoc %{?_with_apidoc: 1} %{!?_with_apidoc: 0}
-%define beta 8
+%define beta 9
Summary: The Open Source PBX
Name: asterisk
Version: 1.6.0
-Release: 0.13.beta%{beta}%{?dist}
+Release: 0.14.beta%{beta}%{?dist}
License: GPLv2
Group: Applications/Internet
URL: http://www.asterisk.org/
@@ -18,30 +18,31 @@
# MD5 Sums
# ========
-# cc8386d74002b0e629b9dc97f748d0e7 asterisk-1.6.0-beta8.tar.gz
-# 0ec53508b409da04c754d1e95b877085 asterisk-1.6.0-beta8-stripped.tar.gz
+# 47998ad858e8ccadf5fa92311fc24b6e asterisk-1.6.0-beta9.tar.gz
+# 4bc3d81f90935caf0bf344e3ee817b17 asterisk-1.6.0-beta9-stripped.tar.gz
#
# SHA1 Sums
# =========
-# 59d44678a7cc2e138edf25ff7ce664182e602208 asterisk-1.6.0-beta8.tar.gz
-# 55d529f0bac419b10394a9e1caee607cd4c9409d asterisk-1.6.0-beta8-stripped.tar.gz
+# 3f04cd803fea058ecec170db15a1a3e1738f0fc9 asterisk-1.6.0-beta9.tar.gz
+# a5d3d6699bcd55afe35c2e57059f3b3b32ebf112 asterisk-1.6.0-beta9-stripped.tar.gz
#Source0: http://downloads.digium.com/pub/telephony/asterisk/releases/asterisk-%{version}%{?beta:-beta%{beta}}.tar.gz
Source0: asterisk-%{version}%{?beta:-beta%{beta}}-stripped.tar.gz
Source1: asterisk-logrotate
Source2: menuselect.makedeps
Source3: menuselect.makeopts
+Source4: asterisk-strip.sh
-Patch1: asterisk-1.6.0-beta7.1-initscripts.patch
-Patch2: asterisk-1.6.0-beta7.1-alternate-voicemail.patch
-Patch3: asterisk-1.6.0-beta7.1-spandspfax.patch
-Patch4: asterisk-1.6.0-beta7.1-appconference.patch
-Patch5: asterisk-1.6.0-beta7.1-alternate-extensions.patch
-Patch6: asterisk-1.6.0-beta7.1-optimization.patch
-Patch7: asterisk-1.6.0-beta7.1-chanmobile.patch
-Patch8: asterisk-1.6.0-beta7.1-lua.patch
-Patch9: asterisk-1.6.0-beta7.1-editline.patch
-Patch10: asterisk-1.6.0-beta7.1-autoconf.patch
+Patch1: asterisk-1.6.0-beta9-initscripts.patch
+Patch2: asterisk-1.6.0-beta9-alternate-voicemail.patch
+Patch3: asterisk-1.6.0-beta9-spandspfax.patch
+#Patch4: asterisk-1.6.0-beta9-appconference.patch
+Patch5: asterisk-1.6.0-beta9-alternate-extensions.patch
+Patch6: asterisk-1.6.0-beta9-optimization.patch
+Patch7: asterisk-1.6.0-beta9-chanmobile.patch
+Patch8: asterisk-1.6.0-beta9-lua.patch
+Patch9: asterisk-1.6.0-beta9-editline.patch
+Patch10: asterisk-1.6.0-beta9-autoconf.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-root-%(%{__id_u} -n)
@@ -65,8 +66,8 @@
BuildRequires: graphviz-gd
%endif
-# for codec_speex and app_conference
-BuildRequires: speex-devel >= 1.2
+# for codec_speex
+BuildRequires: speex-devel
# for format_ogg_vorbis
BuildRequires: libogg-devel
@@ -110,14 +111,14 @@
API documentation for Asterisk.
%endif
-%package conference
-Summary: Audio/video conferencing application for Asterisk
-Group: Applications/Internet
-Requires: asterisk = %{version}-%{release}
-BuildRequires: speex-devel
-
-%description conference
-Audio/video conferencing application for Asterisk.
+#%package conference
+#Summary: Audio/video conferencing application for Asterisk
+#Group: Applications/Internet
+#Requires: asterisk = %{version}-%{release}
+#BuildRequires: speex-devel
+#
+#%description conference
+#Audio/video conferencing application for Asterisk.
%package curl
Summary: Modules for Asterisk that use cURL
@@ -401,7 +402,7 @@
%patch1 -p1
%patch2 -p1
%patch3 -p1
-%patch4 -p1
+#patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
@@ -825,15 +826,15 @@
%doc doc/api/html/*
%endif
-%files conference
-%defattr(-,root,root,-)
-%doc apps/conference/CLI.txt
-%doc apps/conference/Flags.txt
-%doc apps/conference/LICENSE
-%doc apps/conference/README
-%doc apps/conference/README.videoswitch
-%doc apps/conference/TODO
-%{_libdir}/asterisk/modules/app_conference.so
+#%files conference
+#%defattr(-,root,root,-)
+#%doc apps/conference/CLI.txt
+#%doc apps/conference/Flags.txt
+#%doc apps/conference/LICENSE
+#%doc apps/conference/README
+#%doc apps/conference/README.videoswitch
+#%doc apps/conference/TODO
+#%{_libdir}/asterisk/modules/app_conference.so
%files curl
%defattr(-,root,root,-)
@@ -939,7 +940,6 @@
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/asterisk/cdr_pgsql.conf
%config(noreplace) %{_sysconfdir}/asterisk/res_pgsql.conf
-%doc contrib/scripts/postgres_cdr.sql
%doc contrib/scripts/realtime_pgsql.sql
%{_libdir}/asterisk/modules/cdr_pgsql.so
%{_libdir}/asterisk/modules/res_config_pgsql.so
@@ -1019,6 +1019,13 @@
%{_libdir}/asterisk/modules/codec_zap.so
%changelog
+* Mon May 19 2008 Jeffrey C. Ollie <jeff at ocjtech.us> - 1.6.0-0.14.beta9
+- Update to 1.6.0-beta9.
+- Update patches so that they apply cleanly.
+- Temporarily disable app_conference patch as it doesn't compile
+- config/scripts/postgres_cdr.sql has been merged into realtime_pgsql.sql
+- Re-add the asterisk-strip.sh script as a source file.
+
* Tue Apr 22 2008 Jeffrey C. Ollie <jeff at ocjtech.us> - 1.6.0-0.13.beta8
- Update to 1.6.0-beta8
- Contains fixes for AST-2008-006 / CVE-2008-1897
Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/asterisk/F-9/sources,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- sources 23 Apr 2008 02:52:46 -0000 1.14
+++ sources 19 May 2008 15:41:04 -0000 1.15
@@ -1 +1 @@
-0ec53508b409da04c754d1e95b877085 asterisk-1.6.0-beta8-stripped.tar.gz
+4bc3d81f90935caf0bf344e3ee817b17 asterisk-1.6.0-beta9-stripped.tar.gz
--- asterisk-1.6.0-beta7.1-alternate-extensions.patch DELETED ---
--- asterisk-1.6.0-beta7.1-alternate-voicemail.patch DELETED ---
--- asterisk-1.6.0-beta7.1-appconference.patch DELETED ---
--- asterisk-1.6.0-beta7.1-autoconf.patch DELETED ---
--- asterisk-1.6.0-beta7.1-chanmobile.patch DELETED ---
--- asterisk-1.6.0-beta7.1-editline.patch DELETED ---
--- asterisk-1.6.0-beta7.1-initscripts.patch DELETED ---
--- asterisk-1.6.0-beta7.1-lua.patch DELETED ---
--- asterisk-1.6.0-beta7.1-optimization.patch DELETED ---
--- asterisk-1.6.0-beta7.1-spandspfax.patch DELETED ---
More information about the scm-commits
mailing list