I noted this on the dev list but got no response, so I just did it myself.
[asterisk/asterisk.git] / include / asterisk / features.h
old mode 100755 (executable)
new mode 100644 (file)
index fb6bf38..1a5d760
@@ -1,17 +1,24 @@
 /*
- * Asterisk -- A telephony toolkit for Linux.
+ * Asterisk -- An open source telephony toolkit.
  *
- * Call Parking and Pickup API 
- * 
- * Copyright (C) 1999, Mark Spencer
+ * Copyright (C) 1999 - 2005, 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.
+ * 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 Call Parking and Pickup API 
  * Includes code and algorithms from the Zapata library.
- *
  */
 
 #ifndef _AST_FEATURES_H
@@ -22,8 +29,9 @@
 #define FEATURE_APP_ARGS_LEN   256
 #define FEATURE_SNAME_LEN      32
 #define FEATURE_EXTEN_LEN      32
+#define FEATURE_MOH_LEN                80  /* same as MAX_MUSICCLASS from channel.h */
 
-/* main call feature structure */
+/*! \brief main call feature structure */
 struct ast_call_feature {
        int feature_mask;
        char *fname;
@@ -34,13 +42,14 @@ struct ast_call_feature {
        unsigned int flags;
        char app[FEATURE_APP_LEN];              
        char app_args[FEATURE_APP_ARGS_LEN];
+       char moh_class[FEATURE_MOH_LEN];
        AST_LIST_ENTRY(ast_call_feature) feature_entry;
 };
 
 
 
-/*! Park a call and read back parked location */
-/*! \param chan the channel to actually be parked
+/*! \brief Park a call and read back parked location 
+ *  \param chan the channel to actually be parked
     \param host the channel which will have the parked location read to
        Park the channel chan, and read back the parked location to the
        host.  If the call is not picked up within a specified period of
@@ -49,38 +58,47 @@ struct ast_call_feature {
        \param timeout is a timeout in milliseconds
        \param extout is a parameter to an int that will hold the parked location, or NULL if you want
 */
-extern int ast_park_call(struct ast_channel *chan, struct ast_channel *host, int timeout, int *extout);
-/*! Park a call via a masqueraded channel */
-/*! \param rchan the real channel to be parked
+int ast_park_call(struct ast_channel *chan, struct ast_channel *host, int timeout, int *extout);
+
+/*! \brief Park a call via a masqueraded channel
+ *  \param rchan the real channel to be parked
     \param host the channel to have the parking read to
        Masquerade the channel rchan into a new, empty channel which is then
        parked with ast_park_call
        \param timeout is a timeout in milliseconds
        \param extout is a parameter to an int that will hold the parked location, or NULL if you want
 */
-extern int ast_masq_park_call(struct ast_channel *rchan, struct ast_channel *host, int timeout, int *extout);
+int ast_masq_park_call(struct ast_channel *rchan, struct ast_channel *host, int timeout, int *extout);
 
-/*! Determine system parking extension */
-/*! Returns the call parking extension for drivers that provide special
+/*! \brief Determine system parking extension
+ *  Returns the call parking extension for drivers that provide special
     call parking help */
-extern char *ast_parking_ext(void);
-extern char *ast_pickup_ext(void);
+char *ast_parking_ext(void);
 
-/*! Bridge a call, optionally allowing redirection */
+/*! \brief Determine system call pickup extension */
+char *ast_pickup_ext(void);
 
-extern int ast_bridge_call(struct ast_channel *chan, struct ast_channel *peer,struct ast_bridge_config *config);
+/*! \brief Bridge a call, optionally allowing redirection */
+int ast_bridge_call(struct ast_channel *chan, struct ast_channel *peer,struct ast_bridge_config *config);
 
-extern int ast_pickup_call(struct ast_channel *chan);
+/*! \brief Pickup a call */
+int ast_pickup_call(struct ast_channel *chan);
 
-/*! register new feature into feature_set 
+/*! \brief register new feature into feature_set 
    \param feature an ast_call_feature object which contains a keysequence
    and a callback function which is called when this keysequence is pressed
    during a call. */
-extern void ast_register_feature(struct ast_call_feature *feature);
+void ast_register_feature(struct ast_call_feature *feature);
 
-/*! unregister feature from feature_set
+/*! \brief unregister feature from feature_set
     \param feature the ast_call_feature object which was registered before*/
-extern void ast_unregister_feature(struct ast_call_feature *feature);
+void ast_unregister_feature(struct ast_call_feature *feature);
+
+/*! \brief look for a call feature entry by its sname
+       \param name a string ptr, should match "automon", "blindxfer", "atxfer", etc. */
+struct ast_call_feature *ast_find_call_feature(const char *name);
+
+void ast_rdlock_call_features(void);
+void ast_unlock_call_features(void);
 
-     
 #endif /* _AST_FEATURES_H */