Thu Apr 28 2011 16:56:46

Asterisk developer's documentation


doxyref.h

Go to the documentation of this file.
00001 /*
00002  * Asterisk -- An open source telephony toolkit.
00003  *
00004  * Copyright (C) 1999 - 2008, Digium, Inc.
00005  *
00006  * See http://www.asterisk.org for more information about
00007  * the Asterisk project. Please do not directly contact
00008  * any of the maintainers of this project for assistance;
00009  * the project provides a web site, mailing lists and IRC
00010  * channels for your use.
00011  *
00012  * This program is free software, distributed under the terms of
00013  * the GNU General Public License Version 2. See the LICENSE file
00014  * at the top of the source tree.
00015  */
00016 
00017 /*! 
00018  * \file 
00019  * \brief This file generates Doxygen pages from files in the /doc
00020  *        directory of the Asterisk source code tree 
00021  */
00022 
00023 /* 
00024  * The following is for Doxygen Developer's documentation generated
00025  * by running "make progdocs" with doxygen installed on your
00026  * system.
00027  */
00028 
00029 /*! 
00030  * \page DevDoc Asterisk Developer's Documentation - Appendices
00031  *
00032  * \section devpolicy Development and Release Policies
00033  * \arg \ref CodeGuide : The must-read document for all developers
00034  * \arg \ref CommitMessages : Information on formatting and special tags for commit messages
00035  * \arg \ref ReleaseStatus : The current support level for various Asterisk releases
00036  * \arg \ref ReleasePolicies : Asterisk Release and Commit Policies
00037  * \arg \ref AstCREDITS : A Thank You to contributors (unfortunately out of date)
00038  *
00039  * \section apisandinterfaces Asterisk APIs and Interfaces
00040  * \arg \ref AstAPI
00041  * \arg \ref AstAPIChanges
00042  * \arg \ref Def_Channel : What's a channel, anyway?
00043  * \arg \ref channel_drivers : Existing channel drivers
00044  * \arg \ref AstAMI : The Call management socket API
00045  * \arg \ref AstARA : A generic data storage and retrieval API for Asterisk
00046  * \arg \ref AstDUNDi : A way to find phone services dynamically by using the DUNDi protocol
00047  * \arg \ref AJI_intro : The Asterisk Jabber Interface
00048  * \arg \ref AstCDR
00049  * \arg \ref AstVar
00050  * \arg \ref AstVideo
00051  * \arg \ref AstENUM : The IETF way to redirect from phone numbers to VoIP calls
00052  * \arg \ref AstHTTP
00053  * \arg \ref AstSpeech
00054  *
00055  * \section debugconfig Debugging and Configuration References
00056  * \arg \ref AstREADME : General Administrator README file
00057  * \arg \ref AstDebug : Hints on debugging
00058  * \arg \ref extref 
00059  * \arg \ref ConfigFiles
00060  * \arg \ref SoundFiles included in the Asterisk distribution
00061  *
00062  * \section weblinks Web sites
00063  * \arg \b Main:  Asterisk Developer's website http://www.asterisk.org/developers/
00064  * \arg \b Bugs: The Issue Tracker http://bugs.digium.com
00065  * \arg \b Lists: List Server http://lists.digium.com
00066  * \arg \b Wiki: The Asterisk Wiki  http://www.voip-info.org
00067  * \arg \b Docs: The Asterisk Documentation Project http://www.asteriskdocs.org
00068  * \arg \b Digium: The Asterisk Company http://www.digium.com
00069  */
00070 
00071 /*!
00072  * \page ReleaseStatus Asterisk Release Status
00073  *
00074  * @AsteriskTrunkWarning
00075  *
00076  * \section warranty Warranty
00077  * The following warranty applies to all open source releases of Asterisk:
00078  *
00079  * NO WARRANTY
00080  *
00081  * BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
00082  * FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
00083  * OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
00084  * PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
00085  * OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00086  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
00087  * TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
00088  * PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
00089  * REPAIR OR CORRECTION.
00090 
00091  * IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
00092  * WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
00093  * REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
00094  * INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
00095  * OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
00096  * TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
00097  * YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
00098  * PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
00099  * POSSIBILITY OF SUCH DAMAGES.
00100  *
00101  * \section releasestatustypes Release Status Types
00102  *
00103  * Release management is a essentially an agreement between the development
00104  * community and the %user community on what kind of updates can be expected
00105  * for Asterisk releases, and what types of changes these updates will contain.
00106  * Once these policies are established, the development community works very
00107  * hard to adhere to them.  However, the development community does reserve
00108  * the right to make exceptions to these rules for special cases as the need
00109  * arises.
00110  *
00111  * Asterisk releases are in various states of maintenance.  The states are
00112  * defined here:
00113  *
00114  * \arg <b>None</b> - This release series is receiving no updates whatsoever.
00115  * \arg <b>Security-Only</b> - This release series is receiving updates, but
00116  *      only to address security issues.  Security issues found and fixed in
00117  *      this release series will be accompanied by a published security advisory
00118  *      from the Asterisk project.
00119  * \arg <b>Full-Support</b> - This release series is receiving updates for all
00120  *      types of bugs.
00121  * \arg <b>Full-Development</b> - Changes in this part of Asterisk include bug
00122  *      fixes, as well as new %features and architectural improvements.
00123  *
00124  * \section AsteriskReleases Asterisk Maintenance Levels
00125  *
00126  * \htmlonly
00127  * <table border="1">
00128  *  <tr>
00129  *   <td><b>Name</b></td>
00130  *   <td><b>SVN Branch</b></td>
00131  *   <td><b>Status</b></td>
00132  *   <td><b>Notes</b></td>
00133  *  </tr>
00134  *  <tr>
00135  *   <td>Asterisk 1.0</td>
00136  *   <td>/branches/1.0</td>
00137  *   <td>None</td>
00138  *  </tr>
00139  *  <tr>
00140  *   <td>Asterisk 1.2</td>
00141  *   <td>/branches/1.2</td>
00142  *   <td>Security-Only</td>
00143  *  </tr>
00144  *  <tr>
00145  *   <td>Asterisk 1.4</td>
00146  *   <td>/branches/1.4</td>
00147  *   <td>Full-Support</td>
00148  *  </tr>
00149  *  <tr>
00150  *   <td>Asterisk 1.6.0</td>
00151  *   <td>/branches/1.6.0</td>
00152  *   <td>Full-Support</td>
00153  *  </tr>
00154  *  <tr>
00155  *   <td>Asterisk 1.6.1</td>
00156  *   <td>/branches/1.6.1</td>
00157  *   <td>Full-Support</td>
00158  *   <td>Still in beta</td>
00159  *  </tr>
00160  *  <tr>
00161  *   <td>Asterisk trunk</td>
00162  *   <td>/trunk</td>
00163  *   <td>Full-Development</td>
00164  *   <td>No releases are made directly from trunk.</td>
00165  *  </tr>
00166  * </table>
00167  * \endhtmlonly
00168  *
00169  * For more information on how and when Asterisk releases are made, see the
00170  * release policies page:
00171  * \arg \ref ReleasePolicies
00172  */
00173 
00174 /*!
00175  * \page ReleasePolicies Asterisk Release and Commit Policies
00176  *
00177  * \AsteriskTrunkWarning
00178  *
00179  * \section releasestatus Asterisk Release Status
00180  *
00181  * For more information on the current status of each Asterisk release series,
00182  * please see the Asterisk Release Status page:
00183  *
00184  * \arg \ref ReleaseStatus
00185  *
00186  * <hr/>
00187  *
00188  * \section commitmonitoring Commit Monitoring
00189  *
00190  * To monitor commits to Asterisk and related projects, visit 
00191  * <a href="http://lists.digium.com/">http://lists.digium.com</a>.  The Digium
00192  * mailing list server hosts a %number of mailing lists for commits.
00193  *
00194  * <hr/>
00195  *
00196  * \section ast10policy Asterisk 1.0
00197  *
00198  * \subsection svnbranch SVN Branch
00199  *
00200  * \arg /branches/1.0
00201  *
00202  * \subsection ast10releases Release and Commit Policy
00203  * No more releases of Asterisk 1.0 will be made for any reason.
00204  *
00205  * No commits should be made to the Asterisk 1.0 branch.
00206  * 
00207  * <hr/>
00208  *
00209  * \section ast12policy Asterisk 1.2
00210  *
00211  * \subsection svnbranch SVN Branch
00212  *
00213  * \arg /branches/1.2
00214  *
00215  * \subsection ast12releases Release and Commit Policy
00216  *
00217  * There will be no more scheduled releases of Asterisk 1.2.
00218  * 
00219  * Commits to the Asterisk 1.2 branch should only address security issues or
00220  * regressions introduced by previous security fixes.  For a security issue, the
00221  * commit should be accompanied by an 
00222  * <a href="http://downloads.digium.com/pub/security/">Asterisk Security Advisory</a>
00223  * and an immediate release.  When a commit goes in to fix a regression, the previous
00224  * security advisory that is related to the change that introduced the bug should get
00225  * updated to indicate that there is an updated version of the fix.  A release should
00226  * be made immediately for these regression fixes, as well.
00227  *
00228  * <hr/>
00229  *
00230  * \section ast14policy Asterisk 1.4
00231  *
00232  * \subsection svnbranch SVN Branch
00233  *
00234  * \arg /branches/1.4
00235  *
00236  * \subsection ast14releases Release and Commit Policy
00237  *
00238  * Asterisk 1.4 is receiving regular bug fix release updates.  An attempt is made to
00239  * make releases of every four to six weeks.  Since this release series is receiving
00240  * changes for all types of bugs, the number of changes in a single release can be
00241  * significant.  1.4.X releases go through a release candidate testing cycle to help
00242  * catch any regressions that may have been introduced.
00243  *
00244  * Commits to Asterisk 1.4 must be to address bugs only.  No new %features should be
00245  * introduced into Asterisk 1.4 to reduce the %number of changes to this established
00246  * release series.  The only exceptions to this %rule are for cases where something
00247  * that may be considered a feature is needed to address a bug or security issue.
00248  *
00249  * <hr/>
00250  *
00251  * \section ast16policy Asterisk 1.6
00252  *
00253  * \subsection svnbranch SVN Branch
00254  *
00255  * \arg /branches/1.6.*
00256  *
00257  * \subsection ast16releases Release and Commit Policy
00258  *
00259  * Asterisk 1.6 is managed in a different way than previous Asterisk release series.
00260  * From a high level, it was inspired by the release model used for Linux 2.6.
00261  * The intended time frame for 1.6.X releases is every 2 or 3 months.  Each 1.6.X
00262  * release gets its own branch.  The 1.6.X branches are branches off of trunk.
00263  * Once the branch is created, it only receives bug fixes.  Each 1.6.X release goes
00264  * through a beta and release candidate testing cycle.
00265  *
00266  * After a 1.6.X release is published, it will be maintained until 1.6.[X + 3] is
00267  * released.  While a 1.6.X release branch is still maintained, it will receive only
00268  * bug fixes.  Periodic maintenance releases will be made and labeled as 1.6.X.Y.
00269  * 1.6.X.Y releases should go through a release candidate test cycle before being
00270  * published.
00271  *
00272  * For now, all previous 1.6 release will be maintained for security issues.  Once
00273  * we have more 1.6 releases to deal with, this part of the policy will likely change.
00274  * 
00275  * For some history on the motivations for Asterisk 1.6 release management, see the
00276  * first two sections of this
00277  * <a href="http://lists.digium.com/pipermail/asterisk-dev/2007-October/030083.html">mailing list post</a>.
00278  *
00279  * <hr/>
00280  *
00281  * \section asttrunk Asterisk Trunk
00282  *
00283  * \subsection svnbranch SVN Branch
00284  *
00285  * \arg /trunk
00286  *
00287  * \subsection asttrunkpolicy Release and Commit Policy
00288  *
00289  * No releases are ever made directly from Asterisk trunk.
00290  *
00291  * Asterisk trunk is used as the main development area for upcoming Asterisk 1.6 
00292  * releases.  Commits to Asterisk trunk are not limited.  They can be bug fixes,
00293  * new %features, and architectural improvements.  However, for larger sets
00294  * of changes, developers should work with the Asterisk project leaders to
00295  * schedule them for inclusion.  Care is taken not to include too many invasive
00296  * sets of changes for each new Asterisk 1.6 release.
00297  *
00298  * No changes should go into Asterisk trunk that are not ready to go into a
00299  * release.  While the upcoming release will go through a beta and release
00300  * candidate test cycle, code should not be in trunk until the code has been
00301  * tested and reviewed such that there is reasonable belief that the code
00302  * is ready to go.
00303  *
00304  * <hr/>
00305  *
00306  * \section astteam Asterisk Team Branches
00307  *
00308  * \subsection svnbranch SVN Branch
00309  *
00310  * \arg /team/&lt;developername&gt;
00311  *
00312  * \subsection astteampolicy Release and Commit Policy
00313  *
00314  * The Asterisk subversion repository has a special directory called "team"
00315  * where developers can make their own personal development branches.  This is
00316  * where new %features, bug fixes, and architectural improvements are developed
00317  * while they are in %progress.
00318  *
00319  * Just about anything goes as far as commits to this area goes.  However,
00320  * developers should keep in mind that anything committed here, as well as
00321  * anywhere else on Digium's SVN server, falls under the contributor license
00322  * agreement.
00323  *
00324  * In addition to each developer having their own space for working on projects,
00325  * there is also a team/group folder where %group development efforts take place.
00326  *
00327  * Finally, in each developer folder, there is a folder called "private".  This
00328  * is where developers can create branches for working on things that they are
00329  * not ready for the whole world to see.
00330  */
00331 
00332 /*! 
00333  * \page CodeGuide Coding Guidelines
00334  * \AsteriskTrunkWarning
00335  * \section Coding Guidelines
00336  * This file is in the /doc directory in your Asterisk source tree.
00337  * Make sure to stay up to date with the latest guidelines.
00338  * \verbinclude CODING-GUIDELINES
00339  */
00340 
00341 /*!
00342  * \page CommitMessages Guidelines for Commit Messages
00343  *
00344  * \AsteriskTrunkWarning
00345  *
00346  * <hr/>
00347  *
00348  * \section CommitMsgFormatting Commit Message Formatting
00349  *
00350  * The following illustrates the basic outline for commit messages:
00351  *
00352   \verbatim
00353   <One-liner summary of changes>
00354  
00355   <Verbose description of the changes>
00356 
00357   <Special Tags>
00358   \endverbatim
00359  *
00360  * Some commit history viewers treat the first line of commit messages as the
00361  * summary for the commit.  So, an effort should be made to format our commit
00362  * messages in that fashion.  The verbose description may contain multiple 
00363  * paragraphs, itemized lists, etc.
00364  *
00365  * Commit messages should be wrapped at 80 %columns.
00366  *
00367  * \note For trivial commits, such as "fix the build", or "fix spelling mistake",
00368  *       the verbose description may not be necessary.
00369  *
00370  * <hr/>
00371  *
00372  * \section CommitMsgTags Special Tags for Commit Messages
00373  *
00374  * \subsection MantisTags Mantis (http://bugs.digium.com/)
00375  *
00376  * To have a commit noted in an issue, use a tag of the form: 
00377  * \arg (issue #1234)
00378  *
00379  * To have a commit automatically close an issue, use a tag of the form:
00380  * \arg (closes issue #1234)
00381  *
00382  * When making a commit for a mantis issue, it is easiest to use the
00383  * provided commit %message template functionality.  It will format the
00384  * special tags appropriately, and will also include information about who
00385  * reported the issue, which patches are being applied, and who did testing.
00386  * 
00387  * Assuming that you have bug marshal access (and if you have commit access,
00388  * it is pretty safe to assume that you do), you will find the commit %message
00389  * template section directly below the issue details section and above the
00390  * issue relationships section.  You will have to click the '+' next to
00391  * "Commit message template" to make the contents of the section visible.
00392  *
00393  * Here is an example of what the template will generate for you:
00394  *
00395   \verbatim
00396   (closes issue #1234)
00397   Reported by: SomeGuy
00398   Patches:
00399        fix_bug_1234.diff uploaded by SomeDeveloper (license 5678)
00400   \endverbatim
00401  *
00402  * If the patch being committed was written by the person doing the commit,
00403  * and is not available to reference as an upload to the issue, there is no
00404  * need to include something like "fixed by me", as that will be the default
00405  * assumption when a specific patch is not referenced.
00406  *
00407  * \subsection ReviewBoardTags Review Board (http://reviewboard.digium.com/)
00408  *
00409  * To have a commit set a review request as submitted, include the full URL
00410  * to the review request.  For example:
00411  * \arg Review: %http://reviewboard.digium.com/r/95/
00412  *
00413  * \note The trailing slash in the review URL is required.
00414  *
00415  * <hr/>
00416  *
00417  * \section CommitMsgSvnmerge Commit Messages with svnmerge
00418  *
00419  * When using the svnmerge tool for merging changes between branches, use the
00420  * commit %message generated by svnmerge.  The '-f' option to svnmerge allows
00421  * you to specify a file for svnmerge to write out a commit %message to.  The
00422  * '-F' option to svn commit allows you to specify a file that contains the
00423  * commit %message.
00424  *
00425  * If you are using the expect script wrappers for svnmerge from repotools,
00426  * a commit %message is automatically placed in the file '../merge.msg'.
00427  *
00428  * For more detailed information about working with branches and merging,
00429  * see the following page on %asterisk.org:
00430  * \arg http://www.asterisk.org/developers/svn-branching-merging
00431  */
00432 
00433 /*! 
00434  * \page AstAPI Asterisk API
00435  * \section Asteriskapi Asterisk API
00436  * Some generic documents on the Asterisk architecture
00437  *
00438  * \arg \ref AstThreadStorage
00439  * \arg \ref DataStores
00440  * \arg \ref AstExtState
00441  *
00442  * \subsection model_txt Generic Model
00443  * \verbinclude model.txt
00444  * \subsection channel_txt Channels
00445  * \arg See \ref Def_Channel
00446  */
00447 
00448 /*! \page AstAPIChanges Asterisk API Changes
00449  *  \section Changes161 Version 1.6.1
00450  *  \li ast_install_vm_functions()
00451  *  \li vmwi_generate()
00452  *  \li ast_channel_datastore_alloc()
00453  *  \li ast_channel_datastore_free()
00454  *  \li ast_channel_cmpwhentohangup()
00455  *  \li ast_channel_setwhentohangup()
00456  *  \li ast_settimeout()
00457  *  \li ast_datastore_alloc()
00458  *  \li ast_datastore_free()
00459  *  \li ast_device_state_changed()
00460  *  \li ast_device_state_changed_literal()
00461  *  \li ast_dnsmgr_get()
00462  *  \li ast_dnsmgr_lookup()
00463  *  \li ast_dsp_set_digitmode()
00464  *  \li ast_get_txt()
00465  *  \li ast_event_unsubscribe()
00466  *  \li localized_context_find_or_create()
00467  *  \li localized_merge_contexts_and_delete()
00468  *  \li ast_console_puts_mutable()
00469  *  \li ast_rtp_get_quality()
00470  *  \li ast_tcptls_client_start()
00471  *  \li ast_tcptls_server_start()
00472  *  \li ast_tcptls_server_stop()
00473  */
00474 
00475 /*! 
00476  * \page AstDebug Debugging
00477  * \section debug Debugging
00478  * \verbinclude backtrace.txt
00479  */
00480 
00481 /*!
00482  * \page AstSpeech The Generic Speech Recognition API
00483  * \section debug The Generic Speech Recognition API
00484  * \verbinclude speechrec.txt
00485  */
00486 
00487 /*! 
00488  * \page DataStores Channel Data Stores
00489  * \section debug Channel Data Stores
00490  * \verbinclude datastores.txt
00491  */
00492 
00493 /*! 
00494  * \page AstAMI AMI - The Manager Interface
00495  * \section ami AMI - The manager Interface
00496  * \arg \link Config_ami Configuration file \endlink
00497  * \arg \ref manager.c
00498  * \verbinclude manager.txt
00499  */
00500 
00501 /*!
00502  * \page AstARA ARA - The Asterisk Realtime Interface
00503  * \section realtime ARA - a generic API to storage and retrieval
00504  * Implemented in \ref config.c 
00505  * Implemented in \ref pbx_realtime.c 
00506  * \verbinclude realtime.txt
00507  * \verbinclude extconfig.txt
00508  */
00509 
00510 /*! 
00511  * \page AstDUNDi DUNDi
00512  *
00513  * DUNDi is a peer-to-peer system for locating Internet gateways to telephony 
00514  * services. Unlike traditional centralized services (such as the remarkably 
00515  * simple and concise ENUM standard), DUNDi is fully-distributed with no 
00516  * centralized authority whatsoever.
00517  *
00518  * DUNDi is not itself a Voice-over IP signaling or media protocol. Instead, 
00519  * it publishes routes which are in turn accessed via industry standard 
00520  * protocols such as IAX, SIP and H.323. 
00521  *
00522  * \par References
00523  * \arg DUNDi is documented at http://www.dundi.com
00524  * \arg Implemented in \ref pbx_dundi.c and \ref dundi-parser.c
00525  * \arg Configuration in \link Config_dun dundi.conf \endlink
00526  */
00527 
00528 /*! 
00529  * \page AstCDR CDR - Call Data Records and billing
00530  * \section cdr Call Data Records
00531  * \par See also
00532  * \arg \ref cdr.c
00533  * \arg \ref cdr_drivers
00534  * \arg \ref Config_cdr CDR configuration files
00535  *
00536  * \verbinclude cdrdriver.txt
00537  */
00538 
00539 /*! 
00540  * \page AstREADME README
00541  * \verbinclude README
00542  */
00543  
00544 /*! 
00545  * \page AstCREDITS CREDITS
00546  * \verbinclude CREDITS
00547  */
00548 
00549 /*! 
00550  * \page AstVideo Video support in Asterisk
00551  * \section sectAstVideo Video support in Asterisk
00552  * \verbinclude video.txt
00553  */
00554 
00555 /*! 
00556  * \page AstVar Globally predefined channel variables
00557  * \section globchan Globally predefined channel variables
00558  *
00559  * More and more of these variables are being replaced by dialplan functions.
00560  * Some still exist though and some that does still exist needs to move to
00561  * dialplan functions.
00562  *
00563  * See also
00564  * - \ref pbx_retrieve_variable()
00565  * - \ref AstChanVar
00566  *
00567  *  \verbinclude channelvariables.tex
00568  */
00569 
00570 /*! 
00571  * \page AstChanVar Asterisk Dialplan Variables
00572  * Asterisk Dialplan variables are divided into three groups:
00573  * - Predefined global variables, handled by the PBX core
00574  * - Global variables, that exist for the duration of the pbx execution
00575  * - Channel variables, that exist during a channel
00576  *
00577  * Global variables are reachable in all channels, all of the time.
00578  * Channel variables are only reachable within the channel.
00579  *
00580  * For more information on the predefined variables, see \ref AstVar
00581  * 
00582  * Global and Channel variables:
00583  * - Names are Case insensitive
00584  * - Names that start with a character, but are alphanumeric
00585  * - Global variables are defined and reached with the GLOBAL() dialplan function
00586  *   and the set application, like
00587  *
00588  *    exten => 1234,1,set(GLOBAL(myvariable)=tomteluva)
00589  *
00590  *    - \ref func_global.c
00591  *
00592  * - Channel variables are defined with the set() dialplan application
00593  *
00594  * exten => 1234,1,set(xmasattribute=tomtegröt)
00595  *
00596  * - Some channels also supports setting channel variables with the \b setvar=
00597  *   configuraiton option for a device or line.
00598  *
00599  * \section AstChanVar_globalvars Global Variables
00600  * Global variables can also be set in the [globals] section of extensions.conf. The
00601  * setting \b clearglobalvars in extensions.conf [general] section affects whether
00602  * or not the global variables defined in \b globals are reset at dialplan reload.
00603  * 
00604  * There are CLI commands to change and read global variables. This can be handy
00605  * to reset counters at midnight from an external script.
00606  *
00607  * \section AstChanVar_devnotes Developer notes
00608  * Variable handling is managed within \ref pbx.c
00609  * You need to include pbx.h to reach these functions.
00610  * - \ref pbx_builtin_setvar_helper()
00611  *    - \ref pbx_builtin_getvar_helper()
00612  *
00613  * The variables is a linked list stored in the channel data structure
00614  * with the list starting at varshead in struct ast_channel
00615  */
00616 
00617 /*! 
00618  * \page AstENUM ENUM
00619  * \section enumreadme ENUM
00620  * \arg Configuration: \ref Config_enum
00621  * \arg \ref enum.c
00622  * \arg \ref func_enum.c
00623  *
00624  * \verbinclude enum.txt
00625  */
00626 
00627 /*! 
00628  * \page ConfigFiles Configuration files
00629  * \section config Main configuration files
00630  * \arg \link Config_ast asterisk.conf - the main configuration file \endlink
00631  * \arg \link Config_ext extensions.conf - The Dial Plan \endlink
00632  * \arg \link Config_mod modules.conf - which modules to load and not to load \endlink
00633  * \arg \link Config_fea features.conf - call features (transfer, parking, etc) \endlink
00634  * \section chanconf Channel configuration files
00635  * \arg \link Config_iax IAX2 configuration  \endlink
00636  * \arg \link Config_sip SIP configuration  \endlink
00637  * \arg \link Config_mgcp MGCP configuration  \endlink
00638  * \arg \link Config_rtp RTP configuration  \endlink
00639  * \arg \link Config_dahdi DAHDI configuration  \endlink
00640  * \arg \link Config_oss OSS (sound card) configuration  \endlink
00641  * \arg \link Config_alsa ALSA (sound card) configuration  \endlink
00642  * \arg \link Config_agent Agent (proxy channel) configuration  \endlink
00643  * \arg \link Config_misdn MISDN Experimental ISDN BRI channel configuration  \endlink
00644  * \arg \link Config_h323 H.323 configuration  \endlink
00645  * \section appconf Application configuration files
00646  * \arg \link Config_mm Meetme (conference bridge) configuration  \endlink
00647  * \arg \link Config_qu Queue system configuration  \endlink
00648  * \arg \link Config_vm Voicemail configuration  \endlink
00649  * \arg \link Config_followme Followme configuration  \endlink
00650  * \section cdrconf CDR configuration files
00651  * \arg \link Config_cdr CDR configuration  \endlink
00652  * \arg \link cdr_custom Custom CDR driver configuration \endlink
00653  * \arg \link cdr_ami Manager CDR driver configuration \endlink
00654  * \arg \link cdr_odbc ODBC CDR driver configuration \endlink
00655  * \arg \link cdr_pgsql PostgreSQL CDR driver configuration \endlink
00656  * \arg \link cdr_sqlite SQLite CDR driver configuration \endlink
00657  * \arg \link cdr_tds FreeTDS CDR driver configuration (Microsoft SQL Server) \endlink
00658  * \section miscconf Miscellenaous configuration files
00659  * \arg \link Config_adsi ADSI configuration  \endlink
00660  * \arg \link Config_ami AMI - Manager configuration  \endlink
00661  * \arg \link Config_ara Realtime configuration  \endlink
00662  * \arg \link Config_codec Codec configuration  \endlink
00663  * \arg \link Config_dun DUNDi configuration  \endlink
00664  * \arg \link Config_enum ENUM configuration  \endlink
00665  * \arg \link Config_moh Music on Hold configuration  \endlink
00666  * \arg \link Config_vm Voicemail configuration  \endlink
00667  * \arg \link res_config_sqlite SQLite Resource driver configuration \endlink
00668  */
00669 
00670 /*! 
00671  * \page Config_ast Asterisk.conf
00672  * \verbinclude asterisk-conf.txt
00673  */
00674 
00675 /*! 
00676  * \page Config_mod Modules configuration
00677  * All res_ resource modules are loaded with globals on, which means
00678  * that non-static functions are callable from other modules.
00679  *
00680  * If you want your non res_* module to export functions to other modules
00681  * you have to include it in the [global] section.
00682  * \verbinclude modules.conf.sample
00683  */
00684 
00685 /*! 
00686  * \page Config_fea Call features configuration
00687  * \par See also
00688  * \arg \ref res_features.c : Call feature implementation
00689  * \section featconf features.conf
00690  * \verbinclude features.conf.sample
00691  */
00692 
00693 /*! 
00694  * \page Config_followme Followme: An application for simple follow-me calls
00695  * \section followmeconf Followme.conf
00696  * - See app_followme.c
00697  * \verbinclude followme.conf.sample
00698  */
00699 
00700 /*! 
00701  * \page Config_ext Extensions.conf - the Dial Plan
00702  * \section dialplan Extensions.conf 
00703  * \verbinclude extensions.conf.sample
00704  */
00705 
00706 /*! 
00707  * \page Config_iax IAX2 configuration
00708  * IAX2 is implemented in \ref chan_iax2.c
00709  * \arg \link Config_iax iax.conf Configuration file example \endlink
00710  * \section iaxreadme IAX readme file
00711  * \verbinclude iax.txt
00712  * \section Config_iax IAX Configuration example
00713  * \verbinclude iax.conf.sample
00714  * \section iaxjitter IAX Jitterbuffer information
00715  * \verbinclude jitterbuffer.txt
00716  */
00717 
00718 /*! 
00719  * \page Config_iax IAX configuration
00720  * \arg Implemented in \ref chan_iax2.c
00721  * \section iaxconf iax.conf
00722  * \verbinclude iax.conf.sample
00723  */
00724 
00725 /*! 
00726  * \page Config_sip SIP configuration
00727  * Also see \ref Config_rtp RTP configuration
00728  * \arg Implemented in \ref chan_sip.c
00729  * \section sipconf sip.conf
00730  * \verbinclude sip.conf.sample
00731  *
00732  * \arg \b Back \ref chanconf
00733  */
00734 
00735 /*! 
00736  * \page Config_mgcp MGCP configuration
00737  * Also see \ref Config_rtp RTP configuration
00738  * \arg Implemented in \ref chan_mgcp.c
00739  * \section mgcpconf mgcp.conf
00740  * \verbinclude mgcp.conf.sample
00741  */
00742 
00743 /*! 
00744  * \page README_misdn MISDN documentation
00745  * \arg See \ref Config_misdn
00746  * \section mISDN configuration
00747  * \verbinclude misdn.txt
00748  */
00749 
00750 /*! 
00751  * \page Config_misdn MISDN configuration
00752  * \arg Implemented in \ref chan_misdn.c
00753  * \arg \ref README_misdn
00754  * \arg See the mISDN home page: http://www.isdn4linux.de/mISDN/
00755  * \section misdnconf misdn.conf
00756  * \verbinclude misdn.conf.sample
00757  */
00758 
00759 /*! 
00760  * \page Config_vm VoiceMail configuration
00761  * \section vmconf voicemail.conf
00762  * \arg Implemented in \ref app_voicemail.c
00763  * \verbinclude voicemail.conf.sample
00764  */
00765 
00766 /*! 
00767  * \page Config_dahdi DAHDI configuration
00768  * \section dahdiconf dahdi.conf
00769  * \arg Implemented in \ref chan_dahdi.c
00770  * \verbinclude dahdi.conf.sample
00771  */
00772 
00773 /*! 
00774  * \page Config_h323 H.323 channel driver information
00775  * This is the configuration of the H.323 channel driver within the Asterisk
00776  * distribution. There's another one, called OH323, in asterisk-addons
00777  * \arg Implemented in \ref chan_h323.c
00778  * \section h323conf h323.conf
00779  * \ref chan_h323.c
00780  */
00781 
00782 /*! 
00783  * \page Config_oss OSS configuration
00784  * \section ossconf oss.conf
00785  * \arg Implemented in \ref chan_oss.c
00786  * \verbinclude oss.conf.sample
00787  */
00788 
00789 /*! 
00790  * \page Config_alsa ALSA configuration
00791  * \section alsaconf alsa.conf
00792  * \arg Implemented in \ref chan_alsa.c
00793  * \verbinclude alsa.conf.sample
00794  */
00795 
00796 /*! 
00797  * \page Config_agent Agent configuration
00798  * \section agentconf agents.conf
00799  * The agent channel is a proxy channel for queues
00800  * \arg Implemented in \ref chan_agent.c
00801  * \verbinclude agents.conf.sample
00802  */
00803 
00804 /*! 
00805  * \page Config_rtp RTP configuration
00806  * \arg Implemented in \ref rtp.c
00807  * Used in \ref chan_sip.c and \ref chan_mgcp.c (and various H.323 channels)
00808  * \section rtpconf rtp.conf
00809  * \verbinclude rtp.conf.sample
00810  */
00811 
00812 /*! 
00813  * \page Config_dun DUNDi Configuration
00814  * \arg See also \ref AstDUNDi
00815  * \section dundiconf dundi.conf
00816  * \verbinclude dundi.conf.sample
00817  */
00818 
00819 /*! 
00820  * \page Config_enum ENUM Configuration
00821  * \section enumconf enum.conf
00822  * \arg See also \ref enumreadme
00823  * \arg Implemented in \ref func_enum.c and \ref enum.c
00824  * \verbinclude enum.conf.sample
00825  */
00826 
00827 /*! 
00828  * \page cdr_custom Custom CDR Configuration
00829  * \par See also 
00830  * \arg \ref cdrconf
00831  * \arg \ref cdr_custom.c
00832  * \verbinclude cdr_custom.conf.sample
00833  */
00834 
00835 /*! 
00836  * \page cdr_ami Manager CDR driver configuration
00837  * \par See also 
00838  * \arg \ref cdrconf
00839  * \arg \ref AstAMI
00840  * \arg \ref cdr_manager.c
00841  * \verbinclude cdr_manager.conf.sample
00842  */
00843 
00844 /*! 
00845  * \page cdr_odbc ODBC CDR driver configuration
00846  * \arg See also \ref cdrconf
00847  * \arg \ref cdr_odbc.c
00848  * \verbinclude cdr_odbc.conf.sample
00849  * See also:
00850  * \arg http://www.unixodbc.org
00851  */
00852 
00853 /*! 
00854  * \page cdr_pgsql PostgreSQL CDR driver configuration
00855  * \arg See also \ref cdrconf
00856  * \arg \ref cdr_pgsql.c
00857  * See also:
00858  * \arg http://www.postgresql.org
00859  * \verbinclude cdr_pgsql.conf.sample
00860  */
00861 
00862 /*! 
00863  * \page cdr_sqlite SQLite CDR driver configuration
00864  * \arg See also \ref cdrconf
00865  * \arg \ref cdr_sqlite.c
00866  * See also:
00867  * \arg http://www.sqlite.org
00868  */
00869 
00870 /*! 
00871  * \page cdr_tds FreeTDS CDR driver configuration
00872  * \arg See also \ref cdrconf
00873  * See also:
00874  * \arg http://www.freetds.org
00875  * \verbinclude cdr_tds.conf.sample
00876  */
00877 
00878 /*! 
00879  * \page Config_cdr CDR configuration
00880  * \par See also
00881  * \arg \ref cdr_drivers
00882  * \arg \link Config_cdr CDR configuration  \endlink  
00883  * \arg \link cdr_custom Custom CDR driver configuration \endlink
00884  * \arg \link cdr_ami Manager CDR driver configuration \endlink
00885  * \arg \link cdr_odbc ODBC CDR driver configuration \endlink
00886  * \arg \link cdr_pgsql PostgreSQL CDR driver configuration \endlink
00887  * \arg \link cdr_sqlite SQLite CDR driver configuration \endlink
00888  * \arg \link cdr_tds FreeTDS CDR driver configuration (Microsoft SQL Server) \endlink
00889  * \verbinclude cdr.conf.sample
00890  */
00891 
00892 /*! 
00893  * \page Config_moh Music on Hold Configuration
00894  * \arg Implemented in \ref res_musiconhold.c
00895  * \section mohconf musiconhold.conf
00896  * \verbinclude musiconhold.conf.sample
00897  */
00898 
00899 /*! 
00900  * \page Config_adsi ADSI Configuration
00901  * \section adsiconf adsi.conf
00902  * \verbinclude adsi.conf.sample
00903  */
00904 
00905 /*! 
00906  * \page Config_codec CODEC Configuration
00907  * \section codecsconf codecs.conf
00908  * \verbinclude codecs.conf.sample
00909  */
00910 
00911 /*! 
00912  * \page Config_ara REALTIME Configuration
00913  * \arg See also: \arg \link AstARA \endlink
00914  * \section extconf extconfig.conf
00915  * \verbinclude extconfig.conf.sample
00916  */
00917 
00918 /*! 
00919  * \page Config_ami AMI configuration
00920  * \arg See also: \arg \link AstAMI \endlink
00921  * \section amiconf manager.conf
00922  * \verbinclude manager.conf.sample
00923  */
00924 
00925 /*! 
00926  * \page Config_qu ACD - Queue system configuration
00927  * \arg Implemented in \ref app_queue.c
00928  * \section quconf queues.conf
00929  * \verbinclude queues.conf.sample
00930  */
00931 
00932 /*! 
00933  * \page Config_mm Meetme - The conference bridge configuration
00934  * \arg Implemented in \ref app_meetme.c
00935  * \section mmconf meetme.conf
00936  * \verbinclude meetme.conf.sample
00937  */
00938 
00939 /*! 
00940  * \page SoundFiles Sound files
00941  * \section SecSound Asterisk Sound files
00942  * Asterisk includes a large number of sound files. Many of these
00943  * are used by applications and demo scripts within asterisk.
00944  *
00945  * Additional sound files are available in the asterisk-addons
00946  * repository on svn.digium.com
00947  */
00948 
00949 /*! 
00950  * \addtogroup cdr_drivers Module: CDR Drivers
00951  * \section CDR_generic Asterisk CDR Drivers
00952  * \brief CDR drivers are loaded dynamically, each loaded CDR driver produce 
00953  *        a billing record for each call.
00954  * \arg \ref Config_mod "Modules Configuration"
00955  * \arg \ref Config_cdr "CDR Configuration"
00956  */
00957 
00958 
00959 /*! 
00960  * \addtogroup channel_drivers Module: Asterisk Channel Drivers
00961  * \section channel_generic Asterisk Channel Drivers
00962  * \brief Channel drivers are loaded dynamically. 
00963  * \arg \ref Config_mod "Modules Configuration"
00964  */
00965 
00966 /*! 
00967  * \addtogroup applications Module: Dial plan applications
00968  * \section app_generic Asterisk Dial Plan Applications
00969  * \brief Applications support the dialplan. They register dynamically with 
00970  *        \see ast_register_application() and unregister with 
00971  *        \see ast_unregister_application()
00972  * \par See also
00973  * \arg \ref functions
00974  */
00975 
00976 /*! 
00977  * \addtogroup functions Module: Dial plan functions
00978  * \section func_generic Asterisk Dial Plan Functions
00979  * \brief Functions support the dialplan.  They do not change any property of a channel
00980  *        or touch a channel in any way.
00981  * \par See also
00982  * \arg \ref applications
00983  *  
00984  */
00985 
00986 /*! 
00987  * \addtogroup codecs Module: Codecs
00988  * \section codec_generic Asterisk Codec Modules
00989  * Codecs are referenced in configuration files by name 
00990  * \par See also 
00991  * \arg \ref formats 
00992  */
00993 
00994 /*! 
00995  * \addtogroup formats Module: Media File Formats 
00996  * \section codec_generic Asterisk Format drivers
00997  * Formats are modules that read or write media files to disk.
00998  * \par See also
00999  * \arg \ref codecs 
01000  */
01001 
01002 /*! 
01003  * \page AstHTTP AMI over HTTP support
01004  * The http.c file includes support for manager transactions over
01005  * http.
01006  * \section ami AMI - The manager Interface
01007  * \arg \link Config_ami Configuration file \endlink
01008  */
01009 
01010 /*! 
01011  * \page res_config_sqlite SQLite Resource driver configuration
01012  * \arg Implemented in \ref res_config_sqlite.c
01013  * \arg Configuration file:
01014  * \verbinclude res_config_sqlite.conf
01015  * \arg SQL tables:
01016  * \verbinclude res_config_sqlite.txt
01017  * \arg See also:
01018  * http://www.sqlite.org
01019  */
01020 
01021 /*!
01022  * \page Licensing Asterisk Licensing Information
01023  *
01024  * \section license Asterisk License
01025  * \verbinclude LICENSE
01026  *
01027  * \section otherlicenses Licensing of 3rd Party Code
01028  *
01029  * This section contains a (not yet complete) list of libraries that are used
01030  * by various parts of Asterisk, including related licensing information.
01031  *
01032  * \subsection alsa_lib ALSA Library
01033  * \arg <b>Library</b>: libasound
01034  * \arg <b>Website</b>: http://www.alsa-project.org
01035  * \arg <b>Used by</b>: chan_alsa
01036  * \arg <b>License</b>: LGPL
01037  *
01038  * \subsection openssl_lib OpenSSL
01039  * \arg <b>Library</b>: libcrypto, libssl
01040  * \arg <b>Website</b>: http://www.openssl.org
01041  * \arg <b>Used by</b>: Asterisk core (TLS for manager and HTTP), res_crypto
01042  * \arg <b>License</b>: Apache 2.0
01043  * \arg <b>Note</b>:    An exception has been granted to allow linking of 
01044  *                      OpenSSL with Asterisk.
01045  *
01046  * \subsection curl_lib Curl
01047  * \arg <b>Library</b>: libcurl
01048  * \arg <b>Website</b>: http://curl.haxx.se
01049  * \arg <b>Used by</b>: func_curl, res_config_curl, res_curl
01050  * \arg <b>License</b>: BSD
01051  *
01052  * \subsection portaudio_lib PortAudio
01053  * \arg <b>Library</b>: libportaudio
01054  * \arg <b>Website</b>: http://www.portaudio.com
01055  * \arg <b>Used by</b>: chan_console
01056  * \arg <b>License</b>: BSD
01057  * \arg <b>Note</b>:    Even though PortAudio is licensed under a BSD style
01058  *                      license, PortAudio will make use of some audio interface,
01059  *                      depending on how it was built.  That audio interface may
01060  *                      introduce additional licensing restrictions.  On Linux,
01061  *                      this would most commonly be ALSA: \ref alsa_lib.
01062  *
01063  * \subsection rawlist Raw list of libraries that used by any part of Asterisk
01064  * \li c-client.a (app_voicemail with IMAP support)
01065  * \li libSDL-1.2.so.0
01066  * \li libSaClm.so.2
01067  * \li libSaEvt.so.2
01068  * \li libX11.so.6
01069  * \li libXau.so.6
01070  * \li libXdmcp.so.6
01071  * \li libasound.so.2
01072  * \li libc.so.6
01073  * \li libcom_err.so.2
01074  * \li libcrypt.so.1
01075  * \li libcrypto.so.0.9.8 (chan_h323)
01076  * \li libcurl.so.4
01077  * \li libdirect-1.0.so.0
01078  * \li libdirectfb-1.0.so.0
01079  * \li libdl.so.2
01080  * \li libexpat.so (chan_h323)
01081  * \li libfusion-1.0.so.0
01082  * \li libgcc_s.so (chan_h323)
01083  * \li libgcrypt.so.11 (chan_h323)
01084  * \li libglib-2.0.so.0
01085  * \li libgmime-2.0.so.2
01086  * \li libgmodule-2.0.so.0
01087  * \li libgnutls.so.13 (chan_h323)
01088  * \li libgobject-2.0.so.0
01089  * \li libgpg-error.so.0 (chan_h323)
01090  * \li libgssapi_krb5.so.2
01091  * \li libgthread-2.0.so.0
01092  * \li libidn.so.11
01093  * \li libiksemel.so.3
01094  * \li libisdnnet.so
01095  * \li libjack.so.0
01096  * \li libjpeg.so.62
01097  * \li libk5crypto.so.3
01098  * \li libkeyutils.so.1
01099  * \li libkrb5.so.3
01100  * \li libkrb5support.so.0
01101  * \li liblber-2.4.so.2 (chan_h323)
01102  * \li libldap_r-2.4.so.2 (chan_h323)
01103  * \li libltdl.so.3
01104  * \li liblua5.1.so.0
01105  * \li libm.so.6
01106  * \li libmISDN.so
01107  * \li libnbs.so.1
01108  * \li libncurses.so.5
01109  * \li libnetsnmp.so.15
01110  * \li libnetsnmpagent.so.15
01111  * \li libnetsnmphelpers.so.15
01112  * \li libnetsnmpmibs.so.15
01113  * \li libnsl.so.1
01114  * \li libodbc.so.1
01115  * \li libogg.so.0
01116  * \li libopenh323.so (chan_h323)
01117  * \li libpcre.so.3
01118  * \li libperl.so.5.8
01119  * \li libportaudio.so.2
01120  * \li libpq.so.5
01121  * \li libpri.so.1.4
01122  * \li libpt.so (chan_h323)
01123  * \li libpthread.so.0
01124  * \li libradiusclient-ng.so.2
01125  * \li libresample.so.1.0
01126  * \li libresolv.so.2 (chan_h323)
01127  * \li librt.so.1
01128  * \li libsasl2.so.2 (chan_h323)
01129  * \li libselinux.so.1
01130  * \li libsensors.so.3
01131  * \li libspandsp.so.1
01132  * \li libspeex.so.1
01133  * \li libsqlite.so.0
01134  * \li libsqlite3.so.0
01135  * \li libss7.so.1
01136  * \li libssl.so.0.9.8 (chan_h323)
01137  * \li libstdc++.so (chan_h323, chan_vpb)
01138  * \li libsuppserv.so
01139  * \li libsybdb.so.5
01140  * \li libsysfs.so.2
01141  * \li libtasn1.so.3 (chan_h323)
01142  * \li libtds.so.4
01143  * \li libtiff.so.4
01144  * \li libtonezone.so.1.0
01145  * \li libvorbis.so.0
01146  * \li libvorbisenc.so.2
01147  * \li libvpb.a (chan_vpb)
01148  * \li libwrap.so.0
01149  * \li libxcb-xlib.so.0
01150  * \li libxcb.so.1
01151  * \li libz.so.1 (chan_h323)
01152  * \li linux-vdso.so.1
01153 */