Improve groupcount handling (bug #2529) thanks!
[asterisk/asterisk.git] / include / asterisk / app.h
index 0d0ec7b..6b11c65 100755 (executable)
@@ -4,9 +4,9 @@
  * Application convenience functions, designed to give consistent
  * look and feel to asterisk apps.
  * 
- * Copyright (C) 1999, Mark Spencer
+ * Copyright (C) 1999-2004, Digium, Inc.
  *
- * Mark Spencer <markster@linux-support.net>
+ * Mark Spencer <markster@digium.com>
  *
  * This program is free software, distributed under the terms of
  * the GNU General Public License
@@ -54,6 +54,34 @@ int ast_dtmf_stream(struct ast_channel *chan, struct ast_channel *peer, char *di
 //! Stream a filename (or file descriptor) as a generator.
 int ast_linear_stream(struct ast_channel *chan, const char *filename, int fd, int allowoverride);
 
+//! Stream a file with fast forward, pause, reverse.
+int ast_control_streamfile(struct ast_channel *chan, char *file, char *fwd, char *rev, char *stop, char *pause, int skipms);
+
+//! Play a stream and wait for a digit, returning the digit that was pressed
+int ast_play_and_wait(struct ast_channel *chan, char *fn);
+
+//! Record a file for a max amount of time (in seconds), in a given list of formats separated by '|', outputting the duration of the recording, and with a maximum
+//  permitted silence time in milliseconds of 'maxsilence' under 'silencethreshold' or use '-1' for either or both parameters for defaults.
+int ast_play_and_record(struct ast_channel *chan, char *playfile, char *recordfile, int maxtime_sec, char *fmt, int *duration, int silencethreshold, int maxsilence_ms);
+
+//! Record a message and prepend the message to the given record file after playing the optional playfile (or a beep), storing the duration in 'duration' and with a maximum
+//  permitted silence time in milliseconds of 'maxsilence' under 'silencethreshold' or use '-1' for either or both parameters for defaults.
+int ast_play_and_prepend(struct ast_channel *chan, char *playfile, char *recordfile, int maxtime_sec, char *fmt, int *duration, int beep, int silencethreshold, int maxsilence_ms);
+
+#define GROUP_CATEGORY_PREFIX "GROUP"
+
+//! Split a group string into group and category, returning a default category if none is provided.
+int ast_app_group_split_group(char *data, char *group, int group_max, char *category, int category_max);
+
+//! Set the group for a channel, splitting the provided data into group and category, if specified.
+int ast_app_group_set_channel(struct ast_channel *chan, char *data);
+
+//! Get the current channel count of the specified group and category.
+int ast_app_group_get_count(char *group, char *category);
+
+//! Get the current channel count of all groups that match the specified pattern and category.
+int ast_app_group_match_get_count(char *groupmatch, char *category);
+
 #if defined(__cplusplus) || defined(c_plusplus)
 }
 #endif