Thu Oct 11 06:42:06 2012

Asterisk developer's documentation


features.h

Go to the documentation of this file.
00001 /*
00002  * Asterisk -- An open source telephony toolkit.
00003  *
00004  * Copyright (C) 1999 - 2005, Digium, Inc.
00005  *
00006  * Mark Spencer <markster@digium.com>
00007  *
00008  * See http://www.asterisk.org for more information about
00009  * the Asterisk project. Please do not directly contact
00010  * any of the maintainers of this project for assistance;
00011  * the project provides a web site, mailing lists and IRC
00012  * channels for your use.
00013  *
00014  * This program is free software, distributed under the terms of
00015  * the GNU General Public License Version 2. See the LICENSE file
00016  * at the top of the source tree.
00017  */
00018 
00019 /*! \file
00020  * \brief Call Parking and Pickup API 
00021  * Includes code and algorithms from the Zapata library.
00022  */
00023 
00024 #ifndef _AST_FEATURES_H
00025 #define _AST_FEATURES_H
00026 
00027 #include "asterisk/linkedlists.h"
00028 
00029 #define FEATURE_MAX_LEN    11
00030 #define FEATURE_APP_LEN    64
00031 #define FEATURE_APP_ARGS_LEN  256
00032 #define FEATURE_SNAME_LEN  32
00033 #define FEATURE_EXTEN_LEN  32
00034 #define FEATURE_MOH_LEN    80  /* same as MAX_MUSICCLASS from channel.h */
00035 
00036 #define PARK_APP_NAME "Park"
00037 
00038 #define FEATURE_RETURN_HANGUP           -1
00039 #define FEATURE_RETURN_SUCCESSBREAK     0
00040 #define FEATURE_RETURN_PBX_KEEPALIVE    AST_PBX_KEEPALIVE
00041 #define FEATURE_RETURN_NO_HANGUP_PEER   AST_PBX_NO_HANGUP_PEER
00042 #define FEATURE_RETURN_PASSDIGITS       21
00043 #define FEATURE_RETURN_STOREDIGITS      22
00044 #define FEATURE_RETURN_SUCCESS          23
00045 #define FEATURE_RETURN_KEEPTRYING       24
00046 #define FEATURE_RETURN_PARKFAILED       25
00047 
00048 #define FEATURE_SENSE_CHAN (1 << 0)
00049 #define FEATURE_SENSE_PEER (1 << 1)
00050 
00051 typedef int (*ast_feature_operation)(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data);
00052 
00053 /*! \brief main call feature structure */
00054 struct ast_call_feature {
00055    int feature_mask;
00056    char *fname;
00057    char sname[FEATURE_SNAME_LEN];
00058    char exten[FEATURE_MAX_LEN];
00059    char default_exten[FEATURE_MAX_LEN];
00060    int (*operation)(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense, void *data);
00061    unsigned int flags;
00062    char app[FEATURE_APP_LEN];    
00063    char app_args[FEATURE_APP_ARGS_LEN];
00064    char moh_class[FEATURE_MOH_LEN];
00065    AST_LIST_ENTRY(ast_call_feature) feature_entry;
00066 };
00067 
00068 
00069 
00070 /*! \brief Park a call and read back parked location 
00071  *  \param chan the channel to actually be parked
00072     \param host the channel which will have the parked location read to
00073    Park the channel chan, and read back the parked location to the
00074    host.  If the call is not picked up within a specified period of
00075    time, then the call will return to the last step that it was in 
00076    (in terms of exten, priority and context)
00077    \param timeout is a timeout in milliseconds
00078    \param extout is a parameter to an int that will hold the parked location, or NULL if you want
00079 */
00080 int ast_park_call(struct ast_channel *chan, struct ast_channel *host, int timeout, int *extout);
00081 
00082 /*! \brief Park a call via a masqueraded channel
00083  *  \param rchan the real channel to be parked
00084     \param host the channel to have the parking read to
00085    Masquerade the channel rchan into a new, empty channel which is then
00086    parked with ast_park_call
00087    \param timeout is a timeout in milliseconds
00088    \param extout is a parameter to an int that will hold the parked location, or NULL if you want
00089 */
00090 int ast_masq_park_call(struct ast_channel *rchan, struct ast_channel *host, int timeout, int *extout);
00091 
00092 /*! \brief Determine system parking extension
00093  *  Returns the call parking extension for drivers that provide special
00094     call parking help */
00095 char *ast_parking_ext(void);
00096 
00097 /*! \brief Determine system call pickup extension */
00098 char *ast_pickup_ext(void);
00099 
00100 /*! \brief Bridge a call, optionally allowing redirection */
00101 int ast_bridge_call(struct ast_channel *chan, struct ast_channel *peer,struct ast_bridge_config *config);
00102 
00103 /*! \brief detect a feature before bridging 
00104     \param chan
00105     \param ast_flags ptr
00106     \param char ptr of input code
00107     \retval ast_call_feature ptr to be set if found 
00108     \return result, was feature found or not */
00109 int ast_feature_detect(struct ast_channel *chan, struct ast_flags *features, char *code, struct ast_call_feature *feature);
00110 
00111 /*! \brief Pickup a call */
00112 int ast_pickup_call(struct ast_channel *chan);
00113 
00114 /*! \brief register new feature into feature_set 
00115    \param feature an ast_call_feature object which contains a keysequence
00116    and a callback function which is called when this keysequence is pressed
00117    during a call. */
00118 void ast_register_feature(struct ast_call_feature *feature);
00119 
00120 /*! \brief unregister feature from feature_set
00121     \param feature the ast_call_feature object which was registered before*/
00122 void ast_unregister_feature(struct ast_call_feature *feature);
00123 
00124 #endif /* _AST_FEATURES_H */

Generated on Thu Oct 11 06:42:06 2012 for Asterisk - the Open Source PBX by  doxygen 1.5.6