[asterisk-commits] moy: branch moy/mfcr2 r157231 - in /team/moy/mfcr2: ./ apps/ cdr/ channels/ c...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Sun Nov 16 14:37:43 CST 2008


Author: moy
Date: Sun Nov 16 14:37:42 2008
New Revision: 157231

URL: http://svn.digium.com/view/asterisk?view=rev&rev=157231
Log:
merged changes from trunk rev 157229

Added:
    team/moy/mfcr2/configs/cli_aliases.conf.sample
      - copied unchanged from r157229, trunk/configs/cli_aliases.conf.sample
    team/moy/mfcr2/include/asterisk/xmldoc.h
      - copied unchanged from r157229, trunk/include/asterisk/xmldoc.h
    team/moy/mfcr2/main/xmldoc.c
      - copied unchanged from r157229, trunk/main/xmldoc.c
    team/moy/mfcr2/res/res_clialiases.c
      - copied unchanged from r157229, trunk/res/res_clialiases.c
Modified:
    team/moy/mfcr2/   (props changed)
    team/moy/mfcr2/CHANGES
    team/moy/mfcr2/Makefile
    team/moy/mfcr2/Makefile.moddir_rules
    team/moy/mfcr2/Makefile.rules
    team/moy/mfcr2/UPGRADE.txt
    team/moy/mfcr2/apps/app_dial.c
    team/moy/mfcr2/apps/app_directed_pickup.c
    team/moy/mfcr2/apps/app_followme.c
    team/moy/mfcr2/apps/app_meetme.c
    team/moy/mfcr2/apps/app_queue.c
    team/moy/mfcr2/apps/app_voicemail.c
    team/moy/mfcr2/apps/app_while.c
    team/moy/mfcr2/cdr/cdr_adaptive_odbc.c
    team/moy/mfcr2/channels/chan_agent.c
    team/moy/mfcr2/channels/chan_console.c
    team/moy/mfcr2/channels/chan_dahdi.c
    team/moy/mfcr2/channels/chan_iax2.c
    team/moy/mfcr2/channels/chan_mgcp.c
    team/moy/mfcr2/channels/chan_sip.c
    team/moy/mfcr2/channels/chan_skinny.c
    team/moy/mfcr2/configs/cdr_adaptive_odbc.conf.sample
    team/moy/mfcr2/configs/chan_dahdi.conf.sample
    team/moy/mfcr2/configure
    team/moy/mfcr2/contrib/asterisk-ng-doxygen
    team/moy/mfcr2/doc/appdocsxml.dtd
    team/moy/mfcr2/doc/valgrind.txt
    team/moy/mfcr2/funcs/func_devstate.c
    team/moy/mfcr2/include/asterisk/_private.h
    team/moy/mfcr2/include/asterisk/agi.h
    team/moy/mfcr2/include/asterisk/channel.h
    team/moy/mfcr2/include/asterisk/cli.h
    team/moy/mfcr2/include/asterisk/strings.h
    team/moy/mfcr2/include/asterisk/term.h
    team/moy/mfcr2/include/asterisk/xml.h
    team/moy/mfcr2/main/Makefile
    team/moy/mfcr2/main/asterisk.c
    team/moy/mfcr2/main/cdr.c
    team/moy/mfcr2/main/channel.c
    team/moy/mfcr2/main/cli.c
    team/moy/mfcr2/main/editline/readline.c
    team/moy/mfcr2/main/features.c
    team/moy/mfcr2/main/manager.c
    team/moy/mfcr2/main/pbx.c
    team/moy/mfcr2/main/rtp.c
    team/moy/mfcr2/main/taskprocessor.c
    team/moy/mfcr2/main/udptl.c
    team/moy/mfcr2/pbx/pbx_ael.c
    team/moy/mfcr2/pbx/pbx_dundi.c
    team/moy/mfcr2/phoneprov/polycom_line.xml
    team/moy/mfcr2/res/res_agi.c
    team/moy/mfcr2/res/res_jabber.c
    team/moy/mfcr2/res/res_phoneprov.c
    team/moy/mfcr2/res/res_realtime.c

Propchange: team/moy/mfcr2/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Propchange: team/moy/mfcr2/
------------------------------------------------------------------------------
    reviewboard:url = http://reviewboard.digium.com

Modified: team/moy/mfcr2/CHANGES
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/CHANGES?view=diff&rev=157231&r1=157230&r2=157231
==============================================================================
--- team/moy/mfcr2/CHANGES (original)
+++ team/moy/mfcr2/CHANGES Sun Nov 16 14:37:42 2008
@@ -58,6 +58,8 @@
      same  =>     n,SomethingElse()
  * musiconhold.conf classes of type 'files' can now use relative directory paths,
    which are interpreted as relative to the astvarlibdir setting in asterisk.conf.
+ * All deprecated CLI commands are removed from the sourcecode. They are now handled
+   by the new clialiases module. See cli_aliases.conf.sample file.
 
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 1.6.0 to Asterisk 1.6.1  -------------

Modified: team/moy/mfcr2/Makefile
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/Makefile?view=diff&rev=157231&r1=157230&r2=157231
==============================================================================
--- team/moy/mfcr2/Makefile (original)
+++ team/moy/mfcr2/Makefile Sun Nov 16 14:37:42 2008
@@ -440,7 +440,9 @@
 $(SUBDIRS_DIST_CLEAN):
 	@$(SUBMAKE) -C $(@:-dist-clean=) dist-clean
 
-clean: $(SUBDIRS_CLEAN)
+clean: $(SUBDIRS_CLEAN) _clean
+
+_clean:
 	rm -f defaults.h
 	rm -f include/asterisk/build.h
 	rm -f main/version.c
@@ -450,7 +452,7 @@
 
 dist-clean: distclean
 
-distclean: $(SUBDIRS_DIST_CLEAN) clean
+distclean: $(SUBDIRS_DIST_CLEAN) _clean
 	@$(MAKE) -C menuselect dist-clean
 	@$(MAKE) -C sounds dist-clean
 	rm -f menuselect.makeopts makeopts menuselect-tree menuselect.makedeps
@@ -933,7 +935,7 @@
 asterisk.pdf:
 	$(MAKE) -C doc/tex asterisk.pdf
 
-.PHONY: menuselect menuselect.makeopts main sounds clean dist-clean distclean all prereqs cleantest uninstall _uninstall uninstall-all pdf dont-optimize $(SUBDIRS_INSTALL) $(SUBDIRS_DIST_CLEAN) $(SUBDIRS_CLEAN) $(SUBDIRS_UNINSTALL) $(SUBDIRS) $(MOD_SUBDIRS_EMBED_LDSCRIPT) $(MOD_SUBDIRS_EMBED_LDFLAGS) $(MOD_SUBDIRS_EMBED_LIBS) badshell installdirs validate-docs
+.PHONY: menuselect menuselect.makeopts main sounds clean dist-clean distclean all prereqs cleantest uninstall _uninstall uninstall-all pdf dont-optimize $(SUBDIRS_INSTALL) $(SUBDIRS_DIST_CLEAN) $(SUBDIRS_CLEAN) $(SUBDIRS_UNINSTALL) $(SUBDIRS) $(MOD_SUBDIRS_EMBED_LDSCRIPT) $(MOD_SUBDIRS_EMBED_LDFLAGS) $(MOD_SUBDIRS_EMBED_LIBS) badshell installdirs validate-docs _clean
 
 FORCE:
 

Modified: team/moy/mfcr2/Makefile.moddir_rules
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/Makefile.moddir_rules?view=diff&rev=157231&r1=157230&r2=157231
==============================================================================
--- team/moy/mfcr2/Makefile.moddir_rules (original)
+++ team/moy/mfcr2/Makefile.moddir_rules Sun Nov 16 14:37:42 2008
@@ -124,6 +124,7 @@
 dist-clean::
 	rm -f .*.moduleinfo .moduleinfo
 	rm -f .*.makeopts .makeopts
+	rm -f .*.d
 
 .%.moduleinfo: %.c
 	@echo "<member name=\"$*\" displayname=\"$(shell $(GREP) -e AST_MODULE_INFO $< | head -n 1 | cut -d '"' -f 2)\" remove_on_change=\"$(SUBDIR)/$*.o $(SUBDIR)/$*.so\">" > $@

Modified: team/moy/mfcr2/Makefile.rules
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/Makefile.rules?view=diff&rev=157231&r1=157230&r2=157231
==============================================================================
--- team/moy/mfcr2/Makefile.rules (original)
+++ team/moy/mfcr2/Makefile.rules Sun Nov 16 14:37:42 2008
@@ -43,12 +43,12 @@
 endif
 
 # build rules for various targets
+%.o: %.i
+	$(ECHO_PREFIX) echo "   [CCi] $< -> $@"
+	$(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS) $(MAKE_DEPS)
+
 %.o: %.c
 	$(ECHO_PREFIX) echo "   [CC] $< -> $@"
-	$(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS) $(MAKE_DEPS)
-
-%.o: %.i
-	$(ECHO_PREFIX) echo "   [CCi] $< -> $@"
 	$(CMD_PREFIX) $(CC) -o $@ -c $< $(PTHREAD_CFLAGS) $(ASTCFLAGS) $(MAKE_DEPS)
 
 %.i: %.c
@@ -95,4 +95,4 @@
 	$(ECHO_PREFIX) echo "   [LD] $^ -> $@"
 	$(CMD_PREFIX) $(CXX) $(STATIC_BUILD) -o $@ $(PTHREAD_CFLAGS) $(ASTLDFLAGS) $^ $(PTHREAD_LIBS) $(LIBS)
 
-dist-clean::
+dist-clean:: clean

Modified: team/moy/mfcr2/UPGRADE.txt
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/UPGRADE.txt?view=diff&rev=157231&r1=157230&r2=157231
==============================================================================
--- team/moy/mfcr2/UPGRADE.txt (original)
+++ team/moy/mfcr2/UPGRADE.txt Sun Nov 16 14:37:42 2008
@@ -291,6 +291,13 @@
   new value has been added to the TRANSFER event that indicates the caller's
   original position in the queue they are being transfered from.
 
+* Prior to Asterisk 1.6.2, queue names were treated in a case-sensitive
+  manner, meaning that queues with names like "sales" and "sALeS" would
+  be seen as unique queues. The parsing logic has changed to use case-
+  insensitive comparisons now when originally hashing based on queue
+  names, meaning that now the two queues mentioned as examples earlier
+  will be seen as having the same name.
+
 iLBC Codec:
 
 * Previously, the Asterisk source code distribution included the iLBC

Modified: team/moy/mfcr2/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_dial.c?view=diff&rev=157231&r1=157230&r2=157231
==============================================================================
--- team/moy/mfcr2/apps/app_dial.c (original)
+++ team/moy/mfcr2/apps/app_dial.c Sun Nov 16 14:37:42 2008
@@ -1110,7 +1110,7 @@
 }
 
 static int do_timelimit(struct ast_channel *chan, struct ast_bridge_config *config,
-	char *parse, unsigned int *calldurationlimit)
+	char *parse, struct timeval *calldurationlimit)
 {
 	char *stringp = ast_strdupa(parse);
 	char *limit_str, *warning_str, *warnfreq_str;
@@ -1187,12 +1187,15 @@
 	ast_channel_unlock(chan);
 
 	/* undo effect of S(x) in case they are both used */
-	*calldurationlimit = 0;
+	calldurationlimit->tv_sec = 0;
+	calldurationlimit->tv_usec = 0;
+
 	/* more efficient to do it like S(x) does since no advanced opts */
 	if (!config->play_warning && !config->start_sound && !config->end_sound && config->timelimit) {
-		*calldurationlimit = config->timelimit / 1000;
-		ast_verb(3, "Setting call duration limit to %d seconds.\n",
-			*calldurationlimit);
+		calldurationlimit->tv_sec = config->timelimit / 1000;
+		calldurationlimit->tv_usec = (config->timelimit % 1000) * 1000;
+		ast_verb(3, "Setting call duration limit to %.3lf seconds.\n",
+			calldurationlimit->tv_sec + calldurationlimit->tv_usec / 1000000.0);
 		config->timelimit = play_to_caller = play_to_callee =
 		config->play_warning = config->warning_freq = 0;
 	} else {
@@ -1462,6 +1465,31 @@
 	ast_app_options2str64(dial_exec_options, &perm_opts, features->options, sizeof(features->options));
 }
 
+static void end_bridge_callback(void *data)
+{
+	char buf[80];
+	time_t end;
+	struct ast_channel *chan = data;
+
+	if (!chan->cdr) {
+		return;
+	}
+
+	time(&end);
+
+	ast_channel_lock(chan);
+	if (chan->cdr->answer.tv_sec) {
+		snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->answer.tv_sec);
+		pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", buf);
+	}
+
+	if (chan->cdr->start.tv_sec) {
+		snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->start.tv_sec);
+		pbx_builtin_setvar_helper(chan, "DIALEDTIME", buf);
+	}
+	ast_channel_unlock(chan);
+}
+
 static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags64 *peerflags, int *continue_exec)
 {
 	int res = -1; /* default: error */
@@ -1475,7 +1503,7 @@
 	char cidname[AST_MAX_EXTENSION] = "";
 
 	struct ast_bridge_config config = { { 0, } };
-	unsigned int calldurationlimit = 0;
+	struct timeval calldurationlimit = { 0, };
 	char *dtmfcalled = NULL, *dtmfcalling = NULL;
 	struct privacy_args pa = {
 		.sentringing = 0,
@@ -1536,13 +1564,13 @@
 	}
 	
 	if (ast_test_flag64(&opts, OPT_DURATION_STOP) && !ast_strlen_zero(opt_args[OPT_ARG_DURATION_STOP])) {
-		calldurationlimit = atoi(opt_args[OPT_ARG_DURATION_STOP]);
-		if (!calldurationlimit) {
+		calldurationlimit.tv_sec = atoi(opt_args[OPT_ARG_DURATION_STOP]);
+		if (!calldurationlimit.tv_sec) {
 			ast_log(LOG_WARNING, "Dial does not accept S(%s), hanging up.\n", opt_args[OPT_ARG_DURATION_STOP]);
 			pbx_builtin_setvar_helper(chan, "DIALSTATUS", pa.status);
 			goto done;
 		}
-		ast_verb(3, "Setting call duration limit to %d seconds.\n", calldurationlimit);
+		ast_verb(3, "Setting call duration limit to %.3lf seconds.\n", calldurationlimit.tv_sec + calldurationlimit.tv_usec / 1000000.0);
 	}
 
 	if (ast_test_flag64(&opts, OPT_SENDDTMF) && !ast_strlen_zero(opt_args[OPT_ARG_SENDDTMF])) {
@@ -2100,8 +2128,8 @@
 		}
 
 		if (!res) {
-			if (calldurationlimit > 0) {
-				struct timeval whentohangup = { calldurationlimit, 0 };
+			if (!ast_tvzero(calldurationlimit)) {
+				struct timeval whentohangup = calldurationlimit;
 				peer->whentohangup = ast_tvadd(ast_tvnow(), whentohangup);
 			}
 			if (!ast_strlen_zero(dtmfcalled)) {
@@ -2117,27 +2145,6 @@
 		if (res) { /* some error */
 			res = -1;
 		} else {
-			auto void end_bridge_callback(void);
-			void end_bridge_callback (void)
-			{
-				char buf[80];
-				time_t end;
-
-				time(&end);
-
-				ast_channel_lock(chan);
-				if (chan->cdr->answer.tv_sec) {
-					snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->answer.tv_sec);
-					pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", buf);
-				}
-
-				if (chan->cdr->start.tv_sec) {
-					snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->start.tv_sec);
-					pbx_builtin_setvar_helper(chan, "DIALEDTIME", buf);
-				}
-				ast_channel_unlock(chan);
-			}
-
 			if (ast_test_flag64(peerflags, OPT_CALLEE_TRANSFER))
 				ast_set_flag(&(config.features_callee), AST_FEATURE_REDIRECT);
 			if (ast_test_flag64(peerflags, OPT_CALLER_TRANSFER))
@@ -2162,6 +2169,7 @@
 				ast_set_flag(&(config.features_caller), AST_FEATURE_NO_H_EXTEN);
 
 			config.end_bridge_callback = end_bridge_callback;
+			config.end_bridge_callback_data = chan;
 
 			if (moh) {
 				moh = 0;
@@ -2249,7 +2257,7 @@
 		ast_debug(1, "Exiting with DIALSTATUS=%s.\n", pa.status);
 
 		if ((ast_test_flag64(peerflags, OPT_GO_ON)) && !ast_check_hangup(chan) && (res != AST_PBX_KEEPALIVE) && (res != AST_PBX_INCOMPLETE)) {
-			if (calldurationlimit)
+			if (!ast_tvzero(calldurationlimit))
 				memset(&chan->whentohangup, 0, sizeof(chan->whentohangup));
 			res = 0;
 		}

Modified: team/moy/mfcr2/apps/app_directed_pickup.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_directed_pickup.c?view=diff&rev=157231&r1=157230&r2=157231
==============================================================================
--- team/moy/mfcr2/apps/app_directed_pickup.c (original)
+++ team/moy/mfcr2/apps/app_directed_pickup.c Sun Nov 16 14:37:42 2008
@@ -169,17 +169,30 @@
 	return res;
 }
 
+struct pickup_criteria {
+	const char *exten;
+	const char *context;
+};
+
+static int find_by_exten(struct ast_channel *c, void *data)
+{
+	struct pickup_criteria *info = data;
+
+	return (!strcasecmp(c->macroexten, info->exten) || !strcasecmp(c->exten, info->exten)) &&
+		!strcasecmp(c->dialcontext, info->context) &&
+		can_pickup(c);
+}
+
 /* Attempt to pick up specified extension with context */
 static int pickup_by_exten(struct ast_channel *chan, const char *exten, const char *context)
 {
-	auto int find_by_exten(struct ast_channel *c);
-	int find_by_exten(struct ast_channel *c) {
-		return (!strcasecmp(c->macroexten, exten) || !strcasecmp(c->exten, exten)) &&
-			!strcasecmp(c->dialcontext, context) &&
-			can_pickup(c);
-	}
-
-	struct ast_channel *target = ast_channel_search_locked(find_by_exten);
+	struct ast_channel *target = NULL;
+	struct pickup_criteria search = {
+		.exten = exten,
+		.context = context,
+	};
+
+	target = ast_channel_search_locked(find_by_exten, &search);
 
 	if (target) {
 		int res = pickup_do(chan, target);
@@ -191,18 +204,20 @@
 	return -1;
 }
 
+static int find_by_mark(struct ast_channel *c, void *data)
+{
+	const char *mark = data;
+	const char *tmp;
+
+	return (tmp = pbx_builtin_getvar_helper(c, PICKUPMARK)) &&
+		!strcasecmp(tmp, mark) &&
+		can_pickup(c);
+}
+
 /* Attempt to pick up specified mark */
 static int pickup_by_mark(struct ast_channel *chan, const char *mark)
 {
-	auto int find_by_mark(struct ast_channel *);
-	int find_by_mark(struct ast_channel *c) {
-		const char *tmp;
-		return (tmp = pbx_builtin_getvar_helper(c, PICKUPMARK)) &&
-			!strcasecmp(tmp, mark) &&
-			can_pickup(c);
-	}	
-
-	struct ast_channel *target = ast_channel_search_locked(find_by_mark);
+	struct ast_channel *target = ast_channel_search_locked(find_by_mark, (char *) mark);
 
 	if (target) {
 		int res = pickup_do(chan, target);

Modified: team/moy/mfcr2/apps/app_followme.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_followme.c?view=diff&rev=157231&r1=157230&r2=157231
==============================================================================
--- team/moy/mfcr2/apps/app_followme.c (original)
+++ team/moy/mfcr2/apps/app_followme.c Sun Nov 16 14:37:42 2008
@@ -971,6 +971,27 @@
 	return new;
 }
 
+static void end_bridge_callback(void *data)
+{
+	char buf[80];
+	time_t end;
+	struct ast_channel *chan = data;
+
+	time(&end);
+
+	ast_channel_lock(chan);
+	if (chan->cdr->answer.tv_sec) {
+		snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->answer.tv_sec);
+		pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", buf);
+	}
+
+	if (chan->cdr->start.tv_sec) {
+		snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->start.tv_sec);
+		pbx_builtin_setvar_helper(chan, "DIALEDTIME", buf);
+	}
+	ast_channel_unlock(chan);
+}
+
 static int app_exec(struct ast_channel *chan, void *data)
 {
 	struct fm_args targs;
@@ -1085,27 +1106,6 @@
 			ast_stream_and_wait(chan, targs.sorryprompt, "");
 		res = 0;
 	} else {
-		auto void end_bridge_callback(void);
-		void end_bridge_callback (void)
-		{
-			char buf[80];
-			time_t end;
-
-			time(&end);
-
-			ast_channel_lock(chan);
-			if (chan->cdr->answer.tv_sec) {
-				snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->answer.tv_sec);
-				pbx_builtin_setvar_helper(chan, "ANSWEREDTIME", buf);
-			}
-
-			if (chan->cdr->start.tv_sec) {
-				snprintf(buf, sizeof(buf), "%ld", end - chan->cdr->start.tv_sec);
-				pbx_builtin_setvar_helper(chan, "DIALEDTIME", buf);
-			}
-			ast_channel_unlock(chan);
-		}
-
 		caller = chan;
 		outbound = targs.outbound;
 		/* Bridge the two channels. */
@@ -1115,6 +1115,7 @@
 		ast_set_flag(&(config.features_callee), AST_FEATURE_AUTOMON);
 		ast_set_flag(&(config.features_caller), AST_FEATURE_AUTOMON);
 		config.end_bridge_callback = end_bridge_callback;
+		config.end_bridge_callback_data = chan;
 
 		ast_moh_stop(caller);
 		/* Be sure no generators are left on it */

Modified: team/moy/mfcr2/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/moy/mfcr2/apps/app_meetme.c?view=diff&rev=157231&r1=157230&r2=157231
==============================================================================
--- team/moy/mfcr2/apps/app_meetme.c (original)
+++ team/moy/mfcr2/apps/app_meetme.c Sun Nov 16 14:37:42 2008
@@ -54,6 +54,7 @@
 #include "asterisk/utils.h"
 #include "asterisk/translate.h"
 #include "asterisk/ulaw.h"
+#include "asterisk/astobj2.h"
 #include "asterisk/devicestate.h"
 #include "asterisk/dial.h"
 #include "asterisk/causes.h"
@@ -61,6 +62,365 @@
 
 #include "enter.h"
 #include "leave.h"
+
+/*** DOCUMENTATION
+	<application name="MeetMe" language="en_US">
+		<synopsis>
+			MeetMe conference bridge.
+		</synopsis>
+		<syntax>
+			<parameter name="confno">
+				<para>The conference number</para>
+			</parameter>
+			<parameter name="options">
+				<optionlist>
+					<option name="a">
+						<para>Set admin mode.</para>
+					</option>
+					<option name="A">
+						<para>Set marked mode.</para>
+					</option>
+					<option name="b">
+						<para>Run AGI script specified in <variable>MEETME_AGI_BACKGROUND</variable>
+						Default: <literal>conf-background.agi</literal>.</para>
+						<note><para>This does not work with non-DAHDI channels in the same
+						conference).</para></note>
+					</option>
+					<option name="c">
+						<para>Announce user(s) count on joining a conference.</para>
+					</option>
+					<option name="C">
+						<para>Continue in dialplan when kicked out of conference.</para>
+					</option>
+					<option name="d">
+						<para>Dynamically add conference.</para>
+					</option>
+					<option name="D">
+						<para>Dynamically add conference, prompting for a PIN.</para>
+					</option>
+					<option name="e">
+						<para>Select an empty conference.</para>
+					</option>
+					<option name="E">
+						<para>Select an empty pinless conference.</para>
+					</option>
+					<option name="F">
+						<para>Pass DTMF through the conference.</para>
+					</option>
+					<option name="i">
+						<para>Announce user join/leave with review.</para>
+					</option>
+					<option name="I">
+						<para>Announce user join/leave without review.</para>
+					</option>
+					<option name="l">
+						<para>Set listen only mode (Listen only, no talking).</para>
+					</option>
+					<option name="m">
+						<para>Set initially muted.</para>
+					</option>
+					<option name="M" hasparams="optional">
+						<para>Enable music on hold when the conference has a single caller. Optionally,
+						specify a musiconhold class to use. If one is not provided, it will use the
+						channel's currently set music class, or <literal>default</literal>.</para>
+						<argument name="class" required="true" />
+					</option>
+					<option name="o">
+						<para>Set talker optimization - treats talkers who aren't speaking as
+						being muted, meaning (a) No encode is done on transmission and (b)
+						Received audio that is not registered as talking is omitted causing no
+						buildup in background noise.</para>
+					</option>
+					<option name="p" hasparams="optional">
+						<para>Allow user to exit the conference by pressing <literal>#</literal> (default)
+						or any of the defined keys. If keys contain <literal>*</literal> this will override
+						option <literal>s</literal>. The key used is set to channel variable
+						<variable>MEETME_EXIT_KEY</variable>.</para>
+						<argument name="keys" required="true" />
+					</option>
+					<option name="P">
+						<para>Always prompt for the pin even if it is specified.</para>
+					</option>
+					<option name="q">
+						<para>Quiet mode (don't play enter/leave sounds).</para>
+					</option>
+					<option name="r">
+						<para>Record conference (records as <variable>MEETME_RECORDINGFILE</variable>
+						using format <variable>MEETME_RECORDINGFORMAT</variable>. Default filename is
+						<literal>meetme-conf-rec-${CONFNO}-${UNIQUEID}</literal> and the default format is
+						wav.</para>
+					</option>
+					<option name="s">
+						<para>Present menu (user or admin) when <literal>*</literal> is received
+						(send to menu).</para>
+					</option>
+					<option name="t">
+						<para>Set talk only mode. (Talk only, no listening).</para>
+					</option>
+					<option name="T">
+						<para>Set talker detection (sent to manager interface and meetme list).</para>
+					</option>
+					<option name="W" hasparams="optional">
+						<para>Wait until the marked user enters the conference.</para>
+						<argument name="secs" required="true" />
+					</option>
+					<option name="x">
+						<para>Close the conference when last marked user exits</para>
+					</option>
+					<option name="X">
+						<para>Allow user to exit the conference by entering a valid single digit
+						extension <variable>MEETME_EXIT_CONTEXT</variable> or the current context
+						if that variable is not defined.</para>
+					</option>
+					<option name="1">
+						<para>Do not play message when first person enters</para>
+					</option>
+					<option name="S">
+						<para>Kick the user <replaceable>x</replaceable> seconds <emphasis>after</emphasis> he entered into
+						the conference.</para>
+						<argument name="x" required="true" />
+					</option>
+					<option name="L" argsep=":">
+						<para>Limit the conference to <replaceable>x</replaceable> ms. Play a warning when
+						<replaceable>y</replaceable> ms are left. Repeat the warning every <replaceable>z</replaceable> ms.
+						The following special variables can be used with this option:</para>
+						<variablelist>
+							<variable name="CONF_LIMIT_TIMEOUT_FILE">
+								<para>File to play when time is up.</para>
+							</variable>
+							<variable name="CONF_LIMIT_WARNING_FILE">
+								<para>File to play as warning if <replaceable>y</replaceable> is defined. The
+								default is to say the time remaining.</para>
+							</variable>
+						</variablelist>
+						<argument name="x" />
+						<argument name="y" />
+						<argument name="z" />
+					</option>
+				</optionlist>
+			</parameter>
+			<parameter name="pin" />
+		</syntax>
+		<description>
+			<para>Enters the user into a specified MeetMe conference.  If the <replaceable>confno</replaceable>
+			is omitted, the user will be prompted to enter one.  User can exit the conference by hangup, or
+			if the <literal>p</literal> option is specified, by pressing <literal>#</literal>.</para>
+			<note><para>The DAHDI kernel modules and at least one hardware driver (or dahdi_dummy)
+			must be present for conferencing to operate properly. In addition, the chan_dahdi channel driver
+			must be loaded for the <literal>i</literal> and <literal>r</literal> options to operate at
+			all.</para></note>
+		</description>
+		<see-also>
+			<ref type="application">MeetMeCount</ref>
+			<ref type="application">MeetMeAdmin</ref>
+			<ref type="application">MeetMeChannelAdmin</ref>
+		</see-also>
+	</application>
+	<application name="MeetMeCount" language="en_US">
+		<synopsis>
+			MeetMe participant count.
+		</synopsis>
+		<syntax>
+			<parameter name="confno" required="true">
+				<para>Conference number.</para>
+			</parameter>
+			<parameter name="var" />
+		</syntax>
+		<description>
+			<para>Plays back the number of users in the specified MeetMe conference.
+			If <replaceable>var</replaceable> is specified, playback will be skipped and the value
+			will be returned in the variable. Upon application completion, MeetMeCount will hangup
+			the channel, unless priority <literal>n+1</literal> exists, in which case priority progress will
+			continue.</para>
+		</description>
+		<see-also>
+			<ref type="application">MeetMe</ref>
+		</see-also>
+	</application>
+	<application name="MeetMeAdmin" language="en_US">
+		<synopsis>
+			MeetMe conference administration.
+		</synopsis>
+		<syntax>
+			<parameter name="confno" required="true" />
+			<parameter name="command" required="true">
+				<optionlist>
+					<option name="e">
+						<para>Eject last user that joined.</para>
+					</option>
+					<option name="E">
+						<para>Extend conference end time, if scheduled.</para>
+					</option>
+					<option name="k">
+						<para>Kick one user out of conference.</para>
+					</option>
+					<option name="K">
+						<para>Kick all users out of conference.</para>
+					</option>
+					<option name="l">
+						<para>Unlock conference.</para>
+					</option>
+					<option name="L">
+						<para>Lock conference.</para>
+					</option>
+					<option name="m">
+						<para>Unmute one user.</para>
+					</option>
+					<option name="M">
+						<para>Mute one user.</para>
+					</option>
+					<option name="n">
+						<para>Unmute all users in the conference.</para>
+					</option>
+					<option name="N">
+						<para>Mute all non-admin users in the conference.</para>
+					</option>
+					<option name="r">
+						<para>Reset one user's volume settings.</para>
+					</option>
+					<option name="R">
+						<para>Reset all users volume settings.</para>
+					</option>
+					<option name="s">
+						<para>Lower entire conference speaking volume.</para>
+					</option>
+					<option name="S">
+						<para>Raise entire conference speaking volume.</para>
+					</option>
+					<option name="t">
+						<para>Lower one user's talk volume.</para>
+					</option>
+					<option name="T">
+						<para>Raise one user's talk volume.</para>
+					</option>
+					<option name="u">
+						<para>Lower one user's listen volume.</para>
+					</option>
+					<option name="U">
+						<para>Raise one user's listen volume.</para>
+					</option>
+					<option name="v">
+						<para>Lower entire conference listening volume.</para>
+					</option>
+					<option name="V">
+						<para>Raise entire conference listening volume.</para>
+					</option>
+				</optionlist>
+			</parameter>
+			<parameter name="user" />
+		</syntax>
+		<description>
+			<para>Run admin <replaceable>command</replaceable> for conference <replaceable>confno</replaceable>.</para>
+			<para>Will additionally set the variable <variable>MEETMEADMINSTATUS</variable> with one of
+			the following values:</para>
+			<variablelist>
+				<variable name="MEETMEADMINSTATUS">
+					<value name="NOPARSE">
+						Invalid arguments.
+					</value>
+					<value name="NOTFOUND">
+						User specified was not found.
+					</value>
+					<value name="FAILED">
+						Another failure occurred.
+					</value>
+					<value name="OK">
+						The operation was completed successfully.
+					</value>
+				</variable>
+			</variablelist>
+		</description>
+		<see-also>
+			<ref type="application">MeetMe</ref>
+		</see-also>
+	</application>
+	<application name="MeetMeChannelAdmin" language="en_US">
+		<synopsis>
+			MeetMe conference Administration (channel specific).
+		</synopsis>
+		<syntax>
+			<parameter name="channel" required="true" />
+			<parameter name="command" required="true">
+				<optionlist>
+					<option name="k">
+						<para>Kick the specified user out of the conference he is in.</para>
+					</option>
+					<option name="m">
+						<para>Unmute the specified user.</para>
+					</option>
+					<option name="M">
+						<para>Mute the specified user.</para>
+					</option>
+				</optionlist>
+			</parameter>
+		</syntax>
+		<description>
+			<para>Run admin <replaceable>command</replaceable> for a specific
+			<replaceable>channel</replaceable> in any coference.</para>
+		</description>
+	</application>
+	<application name="SLAStation" language="en_US">
+		<synopsis>
+			Shared Line Appearance Station.
+		</synopsis>
+		<syntax>
+			<parameter name="station" required="true">
+				<para>Station name</para>
+			</parameter>
+		</syntax>
+		<description>
+			<para>This application should be executed by an SLA station. The argument depends
+			on how the call was initiated. If the phone was just taken off hook, then the argument
+			<replaceable>station</replaceable> should be just the station name. If the call was
+			initiated by pressing a line key, then the station name should be preceded by an underscore
+			and the trunk name associated with that line button.</para>
+			<para>For example: <literal>station1_line1</literal></para>
+			<para>On exit, this application will set the variable <variable>SLASTATION_STATUS</variable> to
+			one of the following values:</para>
+			<variablelist>
+				<variable name="SLASTATION_STATUS">
+					<value name="FAILURE" />
+					<value name="CONGESTION" />
+					<value name="SUCCESS" />
+				</variable>
+			</variablelist>
+		</description>
+	</application>
+	<application name="SLATrunk" language="en_US">
+		<synopsis>
+			Shared Line Appearance Trunk.
+		</synopsis>
+		<syntax>
+			<parameter name="trunk" required="true">
+				<para>Trunk name</para>
+			</parameter>
+			<parameter name="options">
+				<optionlist>
+					<option name="M" hasparams="optional">
+						<para>Play back the specified MOH <replaceable>class</replaceable>
+						instead of ringing</para>
+						<argument name="class" required="true" />
+					</option>
+				</optionlist>
+			</parameter>
+		</syntax>
+		<description>
+			<para>This application should be executed by an SLA trunk on an inbound call. The channel calling
+			this application should correspond to the SLA trunk with the name <replaceable>trunk</replaceable>
+			that is being passed as an argument.</para>
+			<para>On exit, this application will set the variable <variable>SLATRUNK_STATUS</variable> to
+			one of the following values:</para>
+			<variablelist>
+				<variable name="SLATRUNK_STATUS">
+					<value name="FAILURE" />
+					<value name="SUCCESS" />
+					<value name="UNANSWERED" />
+					<value name="RINGTIMEOUT" />
+				</variable>
+			</variablelist>
+		</description>
+	</application>
+ ***/
 
 #define CONFIG_FILE_NAME "meetme.conf"
 #define SLA_CONFIG_FILE  "sla.conf"
@@ -207,13 +567,6 @@
 static const char *slastation_app = "SLAStation";
 static const char *slatrunk_app = "SLATrunk";
 
-static const char *synopsis = "MeetMe conference bridge";
-static const char *synopsis2 = "MeetMe participant count";
-static const char *synopsis3 = "MeetMe conference Administration";
-static const char *synopsis4 = "MeetMe conference Administration (channel specific)";
-static const char *slastation_synopsis = "Shared Line Appearance Station";
-static const char *slatrunk_synopsis = "Shared Line Appearance Trunk";
-
 /* Lookup RealTime conferences based on confno and current time */
 static int rt_schedule;
 static int fuzzystart;
@@ -224,143 +577,23 @@
 /* Log participant count to the RealTime backend */
 static int rt_log_members;
 
-static const char *descrip =
-"  MeetMe([confno][,[options][,pin]]): Enters the user into a specified MeetMe\n"
-"conference.  If the conference number is omitted, the user will be prompted\n"
-"to enter one.  User can exit the conference by hangup, or if the 'p' option\n"
-"is specified, by pressing '#'.\n"
-"Please note: The DAHDI kernel modules and at least one hardware driver (or dahdi_dummy)\n"
-"             must be present for conferencing to operate properly. In addition, the chan_dahdi\n"
-"             channel driver must be loaded for the 'i' and 'r' options to operate at all.\n\n"
-"The option string may contain zero or more of the following characters:\n"
-"      'a' -- set admin mode\n"
-"      'A' -- set marked mode\n"
-"      'b' -- run AGI script specified in ${MEETME_AGI_BACKGROUND}\n"
-"             Default: conf-background.agi  (Note: This does not work with\n"
-"             non-DAHDI channels in the same conference)\n"
-"      'c' -- announce user(s) count on joining a conference\n"
-"      'C' -- continue in dialplan when kicked out of conference\n"
-"      'd' -- dynamically add conference\n"
-"      'D' -- dynamically add conference, prompting for a PIN\n"
-"      'e' -- select an empty conference\n"
-"      'E' -- select an empty pinless conference\n"
-"      'F' -- Pass DTMF through the conference.\n"
-"      'i' -- announce user join/leave with review\n"
-"      'I' -- announce user join/leave without review\n"
-"      'l' -- set listen only mode (Listen only, no talking)\n"
-"      'm' -- set initially muted\n"
-"      'M[(<class>)]'\n"
-"          -- enable music on hold when the conference has a single caller.\n"
-"             Optionally, specify a musiconhold class to use.  If one is not\n"
-"             provided, it will use the channel's currently set music class,\n"
-"             or \"default\".\n"
-"      'o' -- set talker optimization - treats talkers who aren't speaking as\n"
-"             being muted, meaning (a) No encode is done on transmission and\n"
-"             (b) Received audio that is not registered as talking is omitted\n"
-"             causing no buildup in background noise\n"
-"      'p[(<keys>)]'\n"
-"          -- allow user to exit the conference by pressing '#' (default)\n"
-"             or any of the defined keys. If keys contain '*' this will override\n"
-"             option 's'. The key used is set to channel variable MEETME_EXIT_KEY.\n"
-"      'P' -- always prompt for the pin even if it is specified\n"
-"      'q' -- quiet mode (don't play enter/leave sounds)\n"
-"      'r' -- Record conference (records as ${MEETME_RECORDINGFILE}\n"
-"             using format ${MEETME_RECORDINGFORMAT}). Default filename is\n"
-"             meetme-conf-rec-${CONFNO}-${UNIQUEID} and the default format is\n"
-"             wav.\n"
-"      's' -- Present menu (user or admin) when '*' is received ('send' to menu)\n"
-"      't' -- set talk only mode. (Talk only, no listening)\n"
-"      'T' -- set talker detection (sent to manager interface and meetme list)\n"
-"      'w[(<secs>)]'\n"
-"          -- wait until the marked user enters the conference\n"
-"      'x' -- close the conference when last marked user exits\n"
-"      'X' -- allow user to exit the conference by entering a valid single\n"
-"             digit extension ${MEETME_EXIT_CONTEXT} or the current context\n"
-"             if that variable is not defined.\n"
-"      '1' -- do not play message when first person enters\n"
-"      'S(x)' -- Kick the user 'x' seconds *after* he entered into the conference.\n"
-"      'L(x[:y][:z])' - Limit the conference to 'x' ms. Play a warning when 'y' ms are\n"
-"             left. Repeat the warning every 'z' ms. The following special\n"
-"             variables can be used with this option:\n"
-"              * CONF_LIMIT_TIMEOUT_FILE       File to play when time is up.\n"
-"              * CONF_LIMIT_WARNING_FILE       File to play as warning if 'y' is defined.\n"
-"                                              The default is to say the time remaining.\n"
-"";
-
-static const char *descrip2 =
-"  MeetMeCount(confno[,var]): Plays back the number of users in the specified\n"
-"MeetMe conference. If var is specified, playback will be skipped and the value\n"
-"will be returned in the variable. Upon app completion, MeetMeCount will hangup\n"
-"the channel, unless priority n+1 exists, in which case priority progress will\n"
-"continue.\n"
-"";
-
-static const char *descrip3 = 
-"  MeetMeAdmin(confno,command[,user]): Run admin command for conference\n"
-"      'e' -- Eject last user that joined\n"
-"      'E' -- Extend conference end time, if scheduled\n"
-"      'k' -- Kick one user out of conference\n"
-"      'K' -- Kick all users out of conference\n"
-"      'l' -- Unlock conference\n"
-"      'L' -- Lock conference\n"
-"      'm' -- Unmute one user\n"
-"      'M' -- Mute one user\n"
-"      'n' -- Unmute all users in the conference\n"
-"      'N' -- Mute all non-admin users in the conference\n"
-"      'r' -- Reset one user's volume settings\n"
-"      'R' -- Reset all users volume settings\n"
-"      's' -- Lower entire conference speaking volume\n"
-"      'S' -- Raise entire conference speaking volume\n"
-"      't' -- Lower one user's talk volume\n"
-"      'T' -- Raise one user's talk volume\n"
-"      'u' -- Lower one user's listen volume\n"
-"      'U' -- Raise one user's listen volume\n"
-"      'v' -- Lower entire conference listening volume\n"
-"      'V' -- Raise entire conference listening volume\n"
-"  MeetMeAdmin will additionally set the variable MEETMEADMINSTATUS with one\n"
-"of the following values:\n"
-"      'NOPARSE'  -- Invalid arguments\n"
-"      'NOTFOUND' -- User specified was not found\n"
-"      'FAILED'   -- Another failure occurred\n"
-"      'OK'       -- The operation was completed successfully\n"
-"";
-
-static const char *descrip4 = 
-"  MeetMeChannelAdmin(channel,command): Run admin command for a specific\n"
-"channel in any coference.\n"
-"      'k' -- Kick the specified user out of the conference he is in\n"
-"      'm' -- Unmute the specified user\n"
-"      'M' -- Mute the specified user\n"
-"";
-
-static const char *slastation_desc =
-"  SLAStation(<station name>):\n"
-"This application should be executed by an SLA station.  The argument depends\n"
-"on how the call was initiated.  If the phone was just taken off hook, then\n"
-"the argument \"station\" should be just the station name.  If the call was\n"
-"initiated by pressing a line key, then the station name should be preceded\n"
-"by an underscore and the trunk name associated with that line button.\n"
-"For example: \"station1_line1\"."
-"  On exit, this application will set the variable SLASTATION_STATUS to\n"
-"one of the following values:\n"
-"    FAILURE | CONGESTION | SUCCESS\n"
-"";
-
-static const char *slatrunk_desc =
-"  SLATrunk(<trunk name>[,options]):\n"
-"This application should be executed by an SLA trunk on an inbound call.\n"
-"The channel calling this application should correspond to the SLA trunk\n"
-"with the name \"trunk\" that is being passed as an argument.\n"
-"  On exit, this application will set the variable SLATRUNK_STATUS to\n"
-"one of the following values:\n"
-"   FAILURE | SUCCESS | UNANSWERED | RINGTIMEOUT\n"
-"  The available options are:\n"
-"    M[(<class>)]          - Play back the specified MOH class instead of ringing\n"
-"";
-
 #define MAX_CONFNUM 80
 #define MAX_PIN     80
 #define OPTIONS_LEN 32
+

[... 6065 lines stripped ...]



More information about the asterisk-commits mailing list