I noted this on the dev list but got no response, so I just did it myself.
[asterisk/asterisk.git] / include / asterisk / features.h
index ffea39d..1a5d760 100644 (file)
@@ -29,6 +29,7 @@
 #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 */
 
 /*! \brief main call feature structure */
 struct ast_call_feature {
@@ -41,6 +42,7 @@ 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;
 };
 
@@ -56,7 +58,7 @@ 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);
+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
@@ -66,30 +68,37 @@ extern int ast_park_call(struct ast_channel *chan, struct ast_channel *host, int
        \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);
 
 /*! \brief Determine system parking extension
  *  Returns the call parking extension for drivers that provide special
     call parking help */
-extern char *ast_parking_ext(void);
+char *ast_parking_ext(void);
 
 /*! \brief Determine system call pickup extension */
-extern char *ast_pickup_ext(void);
+char *ast_pickup_ext(void);
 
 /*! \brief Bridge a call, optionally allowing redirection */
-extern int ast_bridge_call(struct ast_channel *chan, struct ast_channel *peer,struct ast_bridge_config *config);
+int ast_bridge_call(struct ast_channel *chan, struct ast_channel *peer,struct ast_bridge_config *config);
 
 /*! \brief Pickup a call */
-extern int ast_pickup_call(struct ast_channel *chan);
+int ast_pickup_call(struct ast_channel *chan);
 
 /*! \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);
 
 /*! \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 */