diff options
author | seanbright <seanbright@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-07-03 15:44:01 +0000 |
---|---|---|
committer | seanbright <seanbright@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-07-03 15:44:01 +0000 |
commit | 7bf1f071423709938d47715cdfc320d11e9371a0 (patch) | |
tree | 2afa7a0121d1e1df081dd367171b5a5b1d08f396 | |
parent | f5aa5e6ba2305de847622d82fb1c6086d091a5ec (diff) |
Add a configure check for Reverse Charging Indication support in LibPRI.
Also go back and wrap all of the places that use the specific reverse charge
APIs with preprocessor conditionals.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@204919 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channels/chan_dahdi.c | 2 | ||||
-rw-r--r-- | channels/sig_pri.c | 6 | ||||
-rw-r--r-- | channels/sig_pri.h | 2 | ||||
-rwxr-xr-x | configure | 264 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | include/asterisk/autoconfig.h.in | 6 |
6 files changed, 279 insertions, 3 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index 8a93673d0..7e545d098 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -5412,7 +5412,7 @@ static int dahdi_func_read(struct ast_channel *chan, const char *function, char ast_mutex_lock(&p->lock); snprintf(buf, len, "%f", p->txgain); ast_mutex_unlock(&p->lock); -#ifdef HAVE_PRI +#if defined(HAVE_PRI_REVERSE_CHARGE) } else if (!strcasecmp(data, "reversecharge")) { ast_mutex_lock(&p->lock); if (p->sig == SIG_PRI || p->sig == SIG_BRI || p->sig == SIG_BRI_PTMP) { diff --git a/channels/sig_pri.c b/channels/sig_pri.c index aac40616e..5111f9181 100644 --- a/channels/sig_pri.c +++ b/channels/sig_pri.c @@ -1163,7 +1163,9 @@ static void *pri_dchannel(void *vpri) pbx_builtin_setvar_helper(c, "CALLEDTON", calledtonstr); if (e->ring.redirectingreason >= 0) pbx_builtin_setvar_helper(c, "PRIREDIRECTREASON", redirectingreason2str(e->ring.redirectingreason)); +#if defined(HAVE_PRI_REVERSE_CHARGE) pri->pvts[chanpos]->reverse_charging_indication = e->ring.reversecharge; +#endif sig_pri_lock_private(pri->pvts[chanpos]); ast_mutex_lock(&pri->lock); @@ -1209,7 +1211,9 @@ static void *pri_dchannel(void *vpri) if (e->ring.redirectingreason >= 0) pbx_builtin_setvar_helper(c, "PRIREDIRECTREASON", redirectingreason2str(e->ring.redirectingreason)); +#if defined(HAVE_PRI_REVERSE_CHARGE) pri->pvts[chanpos]->reverse_charging_indication = e->ring.reversecharge; +#endif snprintf(calledtonstr, sizeof(calledtonstr)-1, "%d", e->ring.calledplan); pbx_builtin_setvar_helper(c, "CALLEDTON", calledtonstr); @@ -1890,7 +1894,7 @@ int sig_pri_call(struct sig_pri_chan *p, struct ast_channel *ast, char *rdest, i case 'r': pridialplan = PRI_NPI_RESERVED | (pridialplan & 0xf0); break; -#if defined(PRI_REVERSECHARGE_REQUESTED) +#if defined(HAVE_PRI_REVERSE_CHARGE) case 'C': pri_sr_set_reversecharge(sr, PRI_REVERSECHARGE_REQUESTED); break; diff --git a/channels/sig_pri.h b/channels/sig_pri.h index 10f3618ac..c7f34d056 100644 --- a/channels/sig_pri.h +++ b/channels/sig_pri.h @@ -162,7 +162,9 @@ struct sig_pri_chan { struct sig_pri_callback *calls; void *chan_pvt; ast_mutex_t service_lock; /*!< Mutex for service messages */ +#if defined(HAVE_PRI_REVERSE_CHARGE) int reverse_charging_indication; +#endif }; struct sig_pri_pri { @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac Revision: 204392 . +# From configure.ac Revision: 204413 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for asterisk 1.6. # @@ -43525,6 +43525,268 @@ fi +if test "x${PBX_PRI_REVERSE_CHARGE}" != "x1" -a "${USE_PRI_REVERSE_CHARGE}" != "no"; then + pbxlibdir="" + # if --with-PRI_REVERSE_CHARGE=DIR has been specified, use it. + if test "x${PRI_REVERSE_CHARGE_DIR}" != "x"; then + if test -d ${PRI_REVERSE_CHARGE_DIR}/lib; then + pbxlibdir="-L${PRI_REVERSE_CHARGE_DIR}/lib" + else + pbxlibdir="-L${PRI_REVERSE_CHARGE_DIR}" + fi + fi + pbxfuncname="pri_sr_set_reversecharge" + if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers + AST_PRI_REVERSE_CHARGE_FOUND=yes + else + as_ac_Lib=`echo "ac_cv_lib_pri_${pbxfuncname}" | $as_tr_sh` +{ echo "$as_me:$LINENO: checking for ${pbxfuncname} in -lpri" >&5 +echo $ECHO_N "checking for ${pbxfuncname} in -lpri... $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="-lpri ${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_PRI_REVERSE_CHARGE_FOUND=yes +else + AST_PRI_REVERSE_CHARGE_FOUND=no +fi + + fi + + # now check for the header. + if test "${AST_PRI_REVERSE_CHARGE_FOUND}" = "yes"; then + PRI_REVERSE_CHARGE_LIB="${pbxlibdir} -lpri " + # if --with-PRI_REVERSE_CHARGE=DIR has been specified, use it. + if test "x${PRI_REVERSE_CHARGE_DIR}" != "x"; then + PRI_REVERSE_CHARGE_INCLUDE="-I${PRI_REVERSE_CHARGE_DIR}/include" + fi + PRI_REVERSE_CHARGE_INCLUDE="${PRI_REVERSE_CHARGE_INCLUDE} " + if test "xlibpri.h" = "x" ; then # no header, assume found + PRI_REVERSE_CHARGE_HEADER_FOUND="1" + else # check for the header + saved_cppflags="${CPPFLAGS}" + CPPFLAGS="${CPPFLAGS} ${PRI_REVERSE_CHARGE_INCLUDE}" + if test "${ac_cv_header_libpri_h+set}" = set; then + { echo "$as_me:$LINENO: checking for libpri.h" >&5 +echo $ECHO_N "checking for libpri.h... $ECHO_C" >&6; } +if test "${ac_cv_header_libpri_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_libpri_h" >&5 +echo "${ECHO_T}$ac_cv_header_libpri_h" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking libpri.h usability" >&5 +echo $ECHO_N "checking libpri.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 <libpri.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 libpri.h presence" >&5 +echo $ECHO_N "checking libpri.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 <libpri.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: libpri.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: libpri.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: libpri.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: libpri.h: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: libpri.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: libpri.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: libpri.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: libpri.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: libpri.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: libpri.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: libpri.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: libpri.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: libpri.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: libpri.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: libpri.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: libpri.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 libpri.h" >&5 +echo $ECHO_N "checking for libpri.h... $ECHO_C" >&6; } +if test "${ac_cv_header_libpri_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_header_libpri_h=$ac_header_preproc +fi +{ echo "$as_me:$LINENO: result: $ac_cv_header_libpri_h" >&5 +echo "${ECHO_T}$ac_cv_header_libpri_h" >&6; } + +fi +if test $ac_cv_header_libpri_h = yes; then + PRI_REVERSE_CHARGE_HEADER_FOUND=1 +else + PRI_REVERSE_CHARGE_HEADER_FOUND=0 +fi + + + CPPFLAGS="${saved_cppflags}" + fi + if test "x${PRI_REVERSE_CHARGE_HEADER_FOUND}" = "x0" ; then + PRI_REVERSE_CHARGE_LIB="" + PRI_REVERSE_CHARGE_INCLUDE="" + else + if test "x${pbxfuncname}" = "x" ; then # only checking headers -> no library + PRI_REVERSE_CHARGE_LIB="" + fi + PBX_PRI_REVERSE_CHARGE=1 + # XXX don't know how to evaluate the description (third argument) in AC_DEFINE_UNQUOTED + +cat >>confdefs.h <<_ACEOF +#define HAVE_PRI_REVERSE_CHARGE 1 +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define HAVE_PRI_REVERSE_CHARGE_VERSION +_ACEOF + + fi + fi +fi + + + if test "x${PBX_RESAMPLE}" != "x1" -a "${USE_RESAMPLE}" != "no"; then pbxlibdir="" # if --with-RESAMPLE=DIR has been specified, use it. diff --git a/configure.ac b/configure.ac index afc950431..dceec8158 100644 --- a/configure.ac +++ b/configure.ac @@ -1441,6 +1441,8 @@ AST_EXT_LIB_CHECK([PRI_INBANDDISCONNECT], [pri], [pri_set_inbanddisconnect], [li AST_EXT_LIB_CHECK([PRI_SERVICE_MESSAGES], [pri], [pri_maintenance_service], [libpri.h]) +AST_EXT_LIB_CHECK([PRI_REVERSE_CHARGE], [pri], [pri_sr_set_reversecharge], [libpri.h]) + AST_EXT_LIB_CHECK([RESAMPLE], [resample], [resample_open], [libresample.h], [-lm]) AST_C_COMPILE_CHECK([SPANDSP], [ diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in index 5ef18daef..972f2dd91 100644 --- a/include/asterisk/autoconfig.h.in +++ b/include/asterisk/autoconfig.h.in @@ -707,6 +707,12 @@ /* Define to indicate the ${PRI_PROG_W_CAUSE_DESCRIP} library version */ #undef HAVE_PRI_PROG_W_CAUSE_VERSION +/* Define this to indicate the ${PRI_REVERSE_CHARGE_DESCRIP} library */ +#undef HAVE_PRI_REVERSE_CHARGE + +/* Define to indicate the ${PRI_REVERSE_CHARGE_DESCRIP} library version */ +#undef HAVE_PRI_REVERSE_CHARGE_VERSION + /* Define this to indicate the ${PRI_SERVICE_MESSAGES_DESCRIP} library */ #undef HAVE_PRI_SERVICE_MESSAGES |