cc42354dc9bc2a5e37bdf13b1c433b24e1dded34
[asterisk/asterisk.git] / include / asterisk / bridging_basic.h
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2013 Digium, Inc.
5  *
6  * Richard Mudgett <rmudgett@digium.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18
19 /*!
20  * \file
21  * \brief Basic bridge subclass API.
22  *
23  * \author Richard Mudgett <rmudgett@digium.com>
24  *
25  * See Also:
26  * \arg \ref AstCREDITS
27  */
28
29 #ifndef _ASTERISK_BRIDGING_BASIC_H
30 #define _ASTERISK_BRIDGING_BASIC_H
31
32 #if defined(__cplusplus) || defined(c_plusplus)
33 extern "C" {
34 #endif
35
36 /* ------------------------------------------------------------------- */
37
38 /*!
39  * \brief Get DTMF feature flags from the channel.
40  * \since 12.0.0
41  *
42  * \param chan Channel to get DTMF features datastore.
43  *
44  * \note The channel should be locked before calling this function.
45  *
46  * \retval flags on success.
47  * \retval NULL on error.
48  */
49 struct ast_flags *ast_bridge_features_ds_get(struct ast_channel *chan);
50
51 /*!
52  * \brief Set basic bridge DTMF feature flags datastore on the channel.
53  * \since 12.0.0
54  *
55  * \param chan Channel to set DTMF features datastore.
56  * \param flags Builtin DTMF feature flags. (ast_bridge_config flags)
57  *
58  * \note The channel must be locked before calling this function.
59  *
60  * \retval 0 on success.
61  * \retval -1 on error.
62  */
63 int ast_bridge_features_ds_set(struct ast_channel *chan, struct ast_flags *flags);
64
65 /*!
66  * \brief Setup DTMF feature hooks using the channel features datastore property.
67  * \since 12.0.0
68  *
69  * \param bridge_channel What to setup DTMF features on.
70  *
71  * \retval 0 on success.
72  * \retval -1 on error.
73  */
74 int ast_bridge_channel_setup_features(struct ast_bridge_channel *bridge_channel);
75
76 /*! \brief Bridge basic class virtual method table. */
77 extern struct ast_bridge_methods ast_bridge_basic_v_table;
78
79 /*!
80  * \brief Create a new basic class bridge
81  *
82  * \retval a pointer to a new bridge on success
83  * \retval NULL on failure
84  *
85  * Example usage:
86  *
87  * \code
88  * struct ast_bridge *bridge;
89  * bridge = ast_bridge_basic_new();
90  * \endcode
91  *
92  * This creates a basic two party bridge with any configured
93  * DTMF features enabled that will be destroyed once one of the
94  * channels hangs up.
95  */
96 struct ast_bridge *ast_bridge_basic_new(void);
97
98 /*! Initialize the basic bridge class for use by the system. */
99 void ast_bridging_init_basic(void);
100
101 /* ------------------------------------------------------------------- */
102
103 #if defined(__cplusplus) || defined(c_plusplus)
104 }
105 #endif
106
107 #endif  /* _ASTERISK_BRIDGING_BASIC_H */