Asterisk.org: Developer Documentation (28 Oct 2009)

Wed Oct 28 15:47:53 2009

## 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 #define FEATURE_MAX_LEN    11
    00028 #define FEATURE_APP_LEN    64
    00029 #define FEATURE_APP_ARGS_LEN  256
    00030 #define FEATURE_SNAME_LEN  32
    00031 #define FEATURE_EXTEN_LEN  32
    00032
    00033 /*! \brief main call feature structure */
    00034 struct ast_call_feature {
    00035    int feature_mask;
    00036    char *fname;
    00037    char sname[FEATURE_SNAME_LEN];
    00038    char exten[FEATURE_MAX_LEN];
    00039    char default_exten[FEATURE_MAX_LEN];
    00040    int (*operation)(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, char *code, int sense);
    00041    unsigned int flags;
    00042    char app[FEATURE_APP_LEN];
    00043    char app_args[FEATURE_APP_ARGS_LEN];
    00044    AST_LIST_ENTRY(ast_call_feature) feature_entry;
    00045 };
    00046
    00047
    00048
    00049 /*! \brief Park a call and read back parked location
    00050  *  \param chan the channel to actually be parked
    00051     \param host the channel which will have the parked location read to
    00052    Park the channel chan, and read back the parked location to the
    00053    host.  If the call is not picked up within a specified period of
    00054    time, then the call will return to the last step that it was in
    00055    (in terms of exten, priority and context)
    00056    \param timeout is a timeout in milliseconds
    00057    \param extout is a parameter to an int that will hold the parked location, or NULL if you want
    00058 */
    00059 extern int ast_park_call(struct ast_channel *chan, struct ast_channel *host, int timeout, int *extout);
    00060
    00061 /*! \brief Park a call via a masqueraded channel
    00062  *  \param rchan the real channel to be parked
    00063     \param host the channel to have the parking read to
    00064    Masquerade the channel rchan into a new, empty channel which is then
    00065    parked with ast_park_call
    00066    \param timeout is a timeout in milliseconds
    00067    \param extout is a parameter to an int that will hold the parked location, or NULL if you want
    00068 */
    00069 extern int ast_masq_park_call(struct ast_channel *rchan, struct ast_channel *host, int timeout, int *extout);
    00070
    00071 /*! \brief Determine system parking extension
    00072  *  Returns the call parking extension for drivers that provide special
    00073     call parking help */
    00074 extern char *ast_parking_ext(void);
    00075
    00076 /*! \brief Determine system call pickup extension */
    00077 extern char *ast_pickup_ext(void);
    00078
    00079 /*! \brief Bridge a call, optionally allowing redirection */
    00080 extern int ast_bridge_call(struct ast_channel *chan, struct ast_channel *peer,struct ast_bridge_config *config);
    00081
    00082 /*! \brief Pickup a call */
    00083 extern int ast_pickup_call(struct ast_channel *chan);
    00084
    00085 /*! \brief register new feature into feature_set
    00086    \param feature an ast_call_feature object which contains a keysequence
    00087    and a callback function which is called when this keysequence is pressed
    00088    during a call. */
    00089 extern void ast_register_feature(struct ast_call_feature *feature);
    00090
    00091 /*! \brief unregister feature from feature_set
    00092     \param feature the ast_call_feature object which was registered before*/
    00093 extern void ast_unregister_feature(struct ast_call_feature *feature);
    00094
    00095 #endif /* _AST_FEATURES_H */