[asterisk-commits] russell: branch russell/events r92360 - in /team/russell/events: ./ apps/ inc...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Tue Dec 11 13:34:40 CST 2007


Author: russell
Date: Tue Dec 11 13:34:39 2007
New Revision: 92360

URL: http://svn.digium.com/view/asterisk?view=rev&rev=92360
Log:
resolve, reset

Modified:
    team/russell/events/   (props changed)
    team/russell/events/apps/app_queue.c
    team/russell/events/include/asterisk/_private.h
    team/russell/events/include/asterisk/adsi.h
    team/russell/events/include/asterisk/ael_structs.h
    team/russell/events/include/asterisk/aes.h
    team/russell/events/include/asterisk/agi.h
    team/russell/events/include/asterisk/alaw.h
    team/russell/events/include/asterisk/app.h
    team/russell/events/include/asterisk/ast_expr.h
    team/russell/events/include/asterisk/astdb.h
    team/russell/events/include/asterisk/astobj2.h
    team/russell/events/include/asterisk/callerid.h
    team/russell/events/include/asterisk/causes.h
    team/russell/events/include/asterisk/cdr.h
    team/russell/events/include/asterisk/devicestate.h
    team/russell/events/include/asterisk/doxyref.h
    team/russell/events/include/asterisk/dsp.h
    team/russell/events/include/asterisk/event.h
    team/russell/events/include/asterisk/extconf.h
    team/russell/events/include/asterisk/hashtab.h
    team/russell/events/include/asterisk/io.h
    team/russell/events/include/asterisk/localtime.h
    team/russell/events/include/asterisk/logger.h
    team/russell/events/include/asterisk/mod_format.h
    team/russell/events/include/asterisk/unaligned.h
    team/russell/events/main/event.c

Propchange: team/russell/events/
------------------------------------------------------------------------------
    automerge = *

Propchange: team/russell/events/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Propchange: team/russell/events/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue Dec 11 13:34:39 2007
@@ -1,1 +1,1 @@
-/trunk:1-92282
+/trunk:1-92359

Modified: team/russell/events/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/apps/app_queue.c?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/apps/app_queue.c (original)
+++ team/russell/events/apps/app_queue.c Tue Dec 11 13:34:39 2007
@@ -324,6 +324,7 @@
 	time_t last_pos;                    /*!< Last time we told the user their position */
 	int opos;                           /*!< Where we started in the queue */
 	int handled;                        /*!< Whether our call was handled */
+	int pending;                        /*!< Non-zero if we are attempting to call a member */
 	int max_penalty;                    /*!< Limit the members that can take this call to this penalty or lower */
 	int linpos;							/*!< If using linear strategy, what position are we at? */
 	int linwrapped;						/*!< Is the linpos wrapped? */
@@ -2480,7 +2481,7 @@
 
 		ast_debug(1, "There are %d available members.\n", avl);
 	
-		while ((idx < avl) && (ch) && (ch != qe)) {
+		while ((idx < avl) && (ch) &&  !ch->pending && (ch != qe)) {
 			idx++;
 			ch = ch->next;			
 		}
@@ -2907,6 +2908,7 @@
 	else
 		to = (qe->parent->timeout) ? qe->parent->timeout * 1000 : -1;
 	orig = to;
+	++qe->pending;
 	ring_one(qe, outgoing, &numbusies);
 	ao2_unlock(qe->parent);
 	if (use_weight)
@@ -2926,6 +2928,7 @@
 	ao2_unlock(qe->parent);
 	peer = lpeer ? lpeer->chan : NULL;
 	if (!peer) {
+		qe->pending = 0;
 		if (to) {
 			/* Must gotten hung up */
 			res = -1;

Modified: team/russell/events/include/asterisk/_private.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/_private.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/_private.h (original)
+++ team/russell/events/include/asterisk/_private.h Tue Dec 11 13:34:39 2007
@@ -3,6 +3,14 @@
  * normally not used by modules.
  * What goes here are typically *_init() routines.
  */
+
+/*! \file
+ *
+ * \brief
+ * Prototypes for public functions only of internal interest,
+ * 
+ */
+
 
 #ifndef _ASTERISK__PRIVATE_H
 #define _ASTERISK__PRIVATE_H

Modified: team/russell/events/include/asterisk/adsi.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/adsi.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/adsi.h (original)
+++ team/russell/events/include/asterisk/adsi.h Tue Dec 11 13:34:39 2007
@@ -24,6 +24,8 @@
 #define _ASTERISK_ADSI_H
 
 #include "asterisk/callerid.h"
+/*! \name ADSI parameters */
+/*@{ */
 
 /* ADSI Message types */
 #define ADSI_MSG_DISPLAY	132
@@ -117,6 +119,8 @@
 #define ADSI_DIR_FROM_LEFT (0)
 #define ADSI_DIR_FROM_RIGHT (1)
 
+/*@} */
+
 /*! Perform Asterisk ADSI initialization (for channel drivers that want 
  *    to support ADSI when the handset is first lifted) 
  * \param chan Channel to initialize for ADSI (if supported)

Modified: team/russell/events/include/asterisk/ael_structs.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/ael_structs.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/ael_structs.h (original)
+++ team/russell/events/include/asterisk/ael_structs.h Tue Dec 11 13:34:39 2007
@@ -20,6 +20,7 @@
  * \brief Structures for AEL - the Asterisk extension language
  *
  * \ref pbx_ael.c
+ * \todo document this file (ael.h)
  */
 
 #ifndef _ASTERISK_AEL_STRUCTS_H
@@ -113,8 +114,8 @@
 	struct ael_priority *plist_last;
 	struct ael_extension *next_exten;
 
-	struct ael_priority *loop_break;  /* set by latest loop for breaks */
-	struct ael_priority *loop_continue; /* set by lastest loop for continuing */
+	struct ael_priority *loop_break;  /*!< set by latest loop for breaks */
+	struct ael_priority *loop_continue; /*!< set by lastest loop for continuing */
 	struct ael_priority *return_target;
 	int return_needed;
 };

Modified: team/russell/events/include/asterisk/aes.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/aes.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/aes.h (original)
+++ team/russell/events/include/asterisk/aes.h Tue Dec 11 13:34:39 2007
@@ -17,7 +17,9 @@
  */
 
 /*! \file
- * \brief Wrappers for AES encryption/decryption
+ * Wrappers for AES encryption/decryption
+ *
+ * \author Kevin P. Fleming <kpfleming at digium.com>
  *
  * These wrappers provided a generic interface to either the
  * AES methods provided by OpenSSL's crypto library, or the

Modified: team/russell/events/include/asterisk/agi.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/agi.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/agi.h (original)
+++ team/russell/events/include/asterisk/agi.h Tue Dec 11 13:34:39 2007
@@ -28,11 +28,11 @@
 #endif
 
 typedef struct agi_state {
-	int fd;		/* FD for general output */
-	int audio;	/* FD for audio output */
-	int ctrl;		/* FD for input control */
-	unsigned int fast:1; /* flag for fast agi or not */
-	struct ast_speech *speech; /* Speech structure for speech recognition */
+	int fd;		        /*!< FD for general output */
+	int audio;	        /*!< FD for audio output */
+	int ctrl;		/*!< FD for input control */
+	unsigned int fast:1;    /*!< flag for fast agi or not */
+	struct ast_speech *speech; /*!< Speech structure for speech recognition */
 } AGI;
 
 typedef struct agi_command {

Modified: team/russell/events/include/asterisk/alaw.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/alaw.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/alaw.h (original)
+++ team/russell/events/include/asterisk/alaw.h Tue Dec 11 13:34:39 2007
@@ -24,8 +24,7 @@
 #define _ASTERISK_ALAW_H
 
 
-/*! Init the ulaw conversion stuff */
-/*!
+/*! \brief
  * To init the alaw to slinear conversion stuff, this needs to be run.
  */
 void ast_alaw_init(void);
@@ -37,9 +36,7 @@
 #define AST_ALAW_AMI_MASK  0x55
 
 
-/*! converts signed linear to alaw */
-/*!
- */
+/*! \brief converts signed linear to alaw */
 #ifndef G711_NEW_ALGORITHM
 extern unsigned char __ast_lin2a[8192];
 #else
@@ -55,7 +52,7 @@
 #define AST_LIN2A_LOOKUP(mag)							\
 	__ast_lin2a[(mag) >> AST_ALAW_BIT_LOSS]
 
-/*! convert signed linear sample to sign-magnitude pair for a-Law */
+/*! \brief Convert signed linear sample to sign-magnitude pair for a-Law */
 static inline void ast_alaw_get_sign_mag(short sample, unsigned *sign, unsigned *mag)
 {
 	/* It may look illogical to retrive the sign this way in both cases,

Modified: team/russell/events/include/asterisk/app.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/app.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/app.h (original)
+++ team/russell/events/include/asterisk/app.h Tue Dec 11 13:34:39 2007
@@ -17,7 +17,7 @@
 
 /*! \file
  * \brief Application convenience functions, designed to give consistent
- look and feel to Asterisk apps.
+ *        look and feel to Asterisk apps.
  */
 
 #ifndef _ASTERISK_APP_H
@@ -109,16 +109,16 @@
   
 void ast_uninstall_vm_functions(void);
 
-/*! Determine if a given mailbox has any voicemail */
+/*! \brief Determine if a given mailbox has any voicemail */
 int ast_app_has_voicemail(const char *mailbox, const char *folder);
 
-/*! Determine number of new/old messages in a mailbox */
+/*! \brief Determine number of new/old messages in a mailbox */
 int ast_app_inboxcount(const char *mailbox, int *newmsgs, int *oldmsgs);
 
-/*! Determine number of messages in a given mailbox and folder */
+/*! \brief Determine number of messages in a given mailbox and folder */
 int ast_app_messagecount(const char *context, const char *mailbox, const char *folder);
 
-/*! Safely spawn an external program while closing file descriptors 
+/*! \brief Safely spawn an external program while closing file descriptors 
 	\note This replaces the \b system call in all Asterisk modules
 */
 int ast_safe_system(const char *s);
@@ -163,7 +163,7 @@
 */
 int ast_dtmf_stream(struct ast_channel *chan, struct ast_channel *peer, const char *digits, int between, unsigned int duration);
 
-/*! Stream a filename (or file descriptor) as a generator. */
+/*! \brief Stream a filename (or file descriptor) as a generator. */
 int ast_linear_stream(struct ast_channel *chan, const char *filename, int fd, int allowoverride);
 
 /*! 
@@ -171,6 +171,7 @@
  * \param chan 
  * \param file filename
  * \param fwd, rev, stop, pause, restart, skipms, offsetms 
+ *
  * Before calling this function, set this to be the number 
  * of ms to start from the beginning of the file.  When the function
  * returns, it will be the number of ms from the beginning where the
@@ -178,23 +179,21 @@
  */
 int ast_control_streamfile(struct ast_channel *chan, const char *file, const char *fwd, const char *rev, const char *stop, const char *pause, const char *restart, int skipms, long *offsetms);
 
-/*! Play a stream and wait for a digit, returning the digit that was pressed */
+/*! \brief Play a stream and wait for a digit, returning the digit that was pressed */
 int ast_play_and_wait(struct ast_channel *chan, const char *fn);
 
 int ast_play_and_record_full(struct ast_channel *chan, const char *playfile, const char *recordfile, int maxtime_sec, const char *fmt, int *duration, int silencethreshold, int maxsilence_ms, const char *path, const char *acceptdtmf, const char *canceldtmf);
 
-/*! Record a file for a max amount of time (in seconds), in a given list of formats separated by '|', outputting the duration of the recording, and with a maximum 
+/*! \brief Record a file for a max amount of time (in seconds), in a given list of formats separated by '|', outputting the duration of the recording, and with a maximum 
  \n
  permitted silence time in milliseconds of 'maxsilence' under 'silencethreshold' or use '-1' for either or both parameters for defaults. 
      calls ast_unlock_path() on 'path' if passed */
 int ast_play_and_record(struct ast_channel *chan, const char *playfile, const char *recordfile, int maxtime_sec, const char *fmt, int *duration, int silencethreshold, int maxsilence_ms, const char *path);
 
-/*! Record a message and prepend the message to the given record file after 
+/*! \brief Record a message and prepend the message to the given record file after 
     playing the optional playfile (or a beep), storing the duration in 
-    'duration' and with a maximum  
-\n
-  permitted silence time in milliseconds of 'maxsilence' under 
-  'silencethreshold' or use '-1' for either or both parameters for defaults. */
+    'duration' and with a maximum permitted silence time in milliseconds of 'maxsilence' under 
+    'silencethreshold' or use '-1' for either or both parameters for defaults. */
 int ast_play_and_prepend(struct ast_channel *chan, char *playfile, char *recordfile, int maxtime_sec, char *fmt, int *duration, int beep, int silencethreshold, int maxsilence_ms);
 
 enum AST_LOCK_RESULT {
@@ -223,42 +222,42 @@
  */
 enum AST_LOCK_RESULT ast_lock_path(const char *path);
 
-/*! Unlock a path */
+/*! \brief Unlock a path */
 int ast_unlock_path(const char *path);
 
-/*! Read a file into asterisk*/
+/*! \brief Read a file into asterisk*/
 char *ast_read_textfile(const char *file);
 
 struct ast_group_info;
 
-/*! Split a group string into group and category, returning a default category if none is provided. */
+/*! \brief Split a group string into group and category, returning a default category if none is provided. */
 int ast_app_group_split_group(const char *data, char *group, int group_max, char *category, int category_max);
 
-/*! Set the group for a channel, splitting the provided data into group and category, if specified. */
+/*! \brief Set the group for a channel, splitting the provided data into group and category, if specified. */
 int ast_app_group_set_channel(struct ast_channel *chan, const char *data);
 
-/*! Get the current channel count of the specified group and category. */
+/*! \brief Get the current channel count of the specified group and category. */
 int ast_app_group_get_count(const char *group, const char *category);
 
-/*! Get the current channel count of all groups that match the specified pattern and category. */
+/*! \brief Get the current channel count of all groups that match the specified pattern and category. */
 int ast_app_group_match_get_count(const char *groupmatch, const char *category);
 
-/*! Discard all group counting for a channel */
+/*! \brief Discard all group counting for a channel */
 int ast_app_group_discard(struct ast_channel *chan);
 
-/*! Update all group counting for a channel to a new one */
+/*! \brief Update all group counting for a channel to a new one */
 int ast_app_group_update(struct ast_channel *oldchan, struct ast_channel *newchan);
 
-/*! Write Lock the group count list */
+/*! \brief Write Lock the group count list */
 int ast_app_group_list_wrlock(void);
 
-/*! Read Lock the group count list */
+/*! \brief Read Lock the group count list */
 int ast_app_group_list_rdlock(void);
 
-/*! Get the head of the group count list */
+/*! \brief Get the head of the group count list */
 struct ast_group_info *ast_app_group_list_head(void);
 
-/*! Unlock the group count list */
+/*! \brief Unlock the group count list */
 int ast_app_group_list_unlock(void);
 
 /*!
@@ -451,10 +450,10 @@
 \note Note that if 'collect' holds digits already, new digits will be appended, so be sure it's initialized properly */
 int ast_app_dtget(struct ast_channel *chan, const char *context, char *collect, size_t size, int maxlen, int timeout);
 
-/*! Allow to record message and have a review option */
+/*! \brief Allow to record message and have a review option */
 int ast_record_review(struct ast_channel *chan, const char *playfile, const char *recordfile, int maxtime, const char *fmt, int *duration, const char *path);
 
-/*! Decode an encoded control or extended ASCII character */
+/*! \brief Decode an encoded control or extended ASCII character */
 int ast_get_encoded_char(const char *stream, char *result, size_t *consumed);
 
 #if defined(__cplusplus) || defined(c_plusplus)

Modified: team/russell/events/include/asterisk/ast_expr.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/ast_expr.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/ast_expr.h (original)
+++ team/russell/events/include/asterisk/ast_expr.h Tue Dec 11 13:34:39 2007
@@ -16,6 +16,13 @@
  * at the top of the source tree.
  */
 
+/*! \file
+ *  
+ *      ???????  
+ *	\todo Explain this file!
+ */
+
+
 #ifndef _ASTERISK_EXPR_H
 #define _ASTERISK_EXPR_H
 #ifndef STANDALONE

Modified: team/russell/events/include/asterisk/astdb.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/astdb.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/astdb.h (original)
+++ team/russell/events/include/asterisk/astdb.h Tue Dec 11 13:34:39 2007
@@ -33,16 +33,22 @@
 	char data[0];
 };
 
+/*! \brief Get key value specified by family/key */
 int ast_db_get(const char *family, const char *key, char *out, int outlen);
 
+/*! \brief Store value addressed by family/key*/
 int ast_db_put(const char *family, const char *key, const char *value);
 
+/*! \brief Delete entry in astdb */
 int ast_db_del(const char *family, const char *key);
 
+/*! \brief Delete a whole family (for some reason also called "tree" */
 int ast_db_deltree(const char *family, const char *keytree);
 
+/*! \brief Get a whole family */
 struct ast_db_entry *ast_db_gettree(const char *family, const char *keytree);
 
+/*! \brief Free in-memory data */
 void ast_db_freetree(struct ast_db_entry *entry);
 
 #if defined(__cplusplus) || defined(c_plusplus)

Modified: team/russell/events/include/asterisk/astobj2.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/astobj2.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/astobj2.h (original)
+++ team/russell/events/include/asterisk/astobj2.h Tue Dec 11 13:34:39 2007
@@ -18,8 +18,9 @@
 #define _ASTERISK_ASTOBJ2_H
 
 /*! \file 
- *
- * \brief Object Model implementing objects and containers.
+ * \ref AstObj2
+ *
+ * \page AstObj2 Object Model implementing objects and containers.
 
 This module implements an abstraction for objects (with locks and
 reference counts), and containers for these user-defined objects,
@@ -28,7 +29,7 @@
 The internal implementation of objects and containers is opaque to the user,
 so we can use different data structures as needs arise.
 
-USAGE - OBJECTS
+\section AstObj2_UsageObjects USAGE - OBJECTS
 
 An ao2 object is a block of memory that the user code can access,
 and for which the system keeps track (with a bit of help from the
@@ -53,21 +54,21 @@
 operations such as refcount and lock manipulations.
 
 On return from ao2_alloc():
-- the object has a refcount = 1;
-
-- the memory for the object is allocated dynamically and zeroed;
-
-- we cannot realloc() the object itself;
-
-- we cannot call free(o) to dispose of the object. Rather, we
-  tell the system that we do not need the reference anymore:
+
+ - the object has a refcount = 1;
+ - the memory for the object is allocated dynamically and zeroed;
+ - we cannot realloc() the object itself;
+ - we cannot call free(o) to dispose of the object. Rather, we
+   tell the system that we do not need the reference anymore:
 
     ao2_ref(o, -1)
 
   causing the destructor to be called (and then memory freed) when
   the refcount goes to 0. This is also available as ao2_unref(o),
   and returns NULL as a convenience, so you can do things like
+
 	o = ao2_unref(o);
+
   and clean the original pointer to prevent errors.
 
 - ao2_ref(o, +1) can be used to modify the refcount on the
@@ -77,7 +78,7 @@
   to manipulate the lock associated with the object.
 
 
-USAGE - CONTAINERS
+\section AstObj2_UsageContainers USAGE - CONTAINERS
 
 An ao2 container is an abstract data structure where we can store
 ao2 objects, search them (hopefully in an efficient way), and iterate
@@ -94,7 +95,9 @@
 
     c = ao2_container_alloc(MAX_BUCKETS, my_hash_fn, my_cmp_fn);
     \endcode
+
 where
+
 - MAX_BUCKETS is the number of buckets in the hash table,
 - my_hash_fn() is the (user-supplied) function that returns a
   hash key for the object (further reduced modulo MAX_BUCKETS
@@ -129,9 +132,12 @@
 \note A container with a single buckets is effectively a linked
 list. However there is no ordering among elements.
 
- */
-
-/*!
+- \ref AstObj2_Containers
+- \ref astobj2.h All documentation for functions and data structures
+
+ */
+
+/*! \brief
  * Typedef for an object destructor. This is called just before freeing
  * the memory for the object. It is passed a pointer to the user-defined
  * data of the object.
@@ -139,7 +145,7 @@
 typedef void (*ao2_destructor_fn)(void *);
 
 
-/*!
+/*! \brief
  * Allocate and initialize an object.
  * 
  * \param data_size The sizeof() of the user-defined structure.
@@ -159,7 +165,7 @@
 void *ao2_realloc(void *data, const size_t data_size);
 
 /*!
- * Reference/unreference an object and return the old refcount.
+ * \brief Reference/unreference an object and return the old refcount.
  *
  * \param o A pointer to the object
  * \param delta Value to add to the reference counter.
@@ -180,7 +186,7 @@
  */
 int ao2_ref(void *o, int delta);
 
-/*!
+/*! \brief
  * Lock an object.
  * 
  * \param a A pointer to the object we want lock.
@@ -188,7 +194,7 @@
  */
 int ao2_lock(void *a);
 
-/*!
+/*! \brief
  * Unlock an object.
  * 
  * \param a A pointer to the object we want unlock.
@@ -196,31 +202,31 @@
  */
 int ao2_unlock(void *a);
 
-/*!
- *
- * Containers
+/*! 
+ *
+ \page AstObj2_Containers AstObj2 Containers
 
 Containers are data structures meant to store several objects,
 and perform various operations on them.
 Internally, objects are stored in lists, hash tables or other
 data structures depending on the needs.
 
-NOTA BENE: at the moment the only container we support is the
-hash table and its degenerate form, the list.
+\note NOTA BENE: at the moment the only container we support is the
+	hash table and its degenerate form, the list.
 
 Operations on container include:
 
-    c = ao2_container_alloc(size, cmp_fn, hash_fn)
+  -  c = \b ao2_container_alloc(size, cmp_fn, hash_fn)
 	allocate a container with desired size and default compare
 	and hash function
 
-    ao2_find(c, arg, flags)
+  -  \b ao2_find(c, arg, flags)
 	returns zero or more element matching a given criteria
 	(specified as arg). Flags indicate how many results we
 	want (only one or all matching entries), and whether we
 	should unlink the object from the container.
 
-    ao2_callback(c, flags, fn, arg)
+  -  \b ao2_callback(c, flags, fn, arg)
 	apply fn(obj, arg) to all objects in the container.
 	Similar to find. fn() can tell when to stop, and
 	do anything with the object including unlinking it.
@@ -233,8 +239,10 @@
 	can do basically anything e.g. counting, deleting records, etc.
 	possibly using arg to store the results.
    
-    iterate on a container
+  -  \b iterate on a container
 	this is done with the following sequence
+
+\code
 
 	    struct ao2_container *c = ... // our container
 	    struct ao2_iterator i;
@@ -246,38 +254,40 @@
 		... do something on o ...
 		ao2_ref(o, -1);
 	    }
+\endcode
 
 	The difference with the callback is that the control
 	on how to iterate is left to us.
 
-    ao2_ref(c, -1)
+    - \b ao2_ref(c, -1)
 	dropping a reference to a container destroys it, very simple!
  
 Containers are ao2 objects themselves, and this is why their
 implementation is simple too.
 
- */
-
-/*!
- * Before declaring containers, we need to declare the types of the
- * arguments passed to the constructor - in turn, this requires
- * to define callback and hash functions and their arguments.
- */
-
-/*!
+Before declaring containers, we need to declare the types of the
+arguments passed to the constructor - in turn, this requires
+to define callback and hash functions and their arguments.
+
+- \ref AstObj2
+- \ref astobj2.h
+ */
+
+/*! \brief
  * Type of a generic callback function
  * \param obj  pointer to the (user-defined part) of an object.
  * \param arg callback argument from ao2_callback()
  * \param flags flags from ao2_callback()
+ *
  * The return values are a combination of enum _cb_results.
  * Callback functions are used to search or manipulate objects in a container,
  */
 typedef int (ao2_callback_fn)(void *obj, void *arg, int flags);
 
-/*! a very common callback is one that matches by address. */
+/*! \brief a very common callback is one that matches by address. */
 ao2_callback_fn ao2_match_by_addr;
 
-/*!
+/*! \brief
  * A callback function will return a combination of CMP_MATCH and CMP_STOP.
  * The latter will terminate the search in a container.
  */
@@ -286,7 +296,7 @@
 	CMP_STOP	= 0x2,	/*!< stop the search now */
 };
 
-/*!
+/*! \brief
  * Flags passed to ao2_callback() and ao2_hash_fn() to modify its behaviour.
  */
 enum search_flags {
@@ -314,12 +324,13 @@
  */
 typedef int (ao2_hash_fn)(const void *obj, const int flags);
 
-/*!
+/*! \name Object Containers 
  * Here start declarations of containers.
  */
+/*@{ */
 struct ao2_container;
 
-/*!
+/*! \brief
  * Allocate and initialize a container 
  * with the desired number of buckets.
  * 
@@ -337,17 +348,19 @@
 struct ao2_container *ao2_container_alloc(const uint n_buckets,
 		ao2_hash_fn *hash_fn, ao2_callback_fn *cmp_fn);
 
-/*!
+/*! \brief
  * Returns the number of elements in a container.
  */
 int ao2_container_count(struct ao2_container *c);
-
-/*
+/*@} */
+
+/*! \name Object Management
  * Here we have functions to manage objects.
  *
  * We can use the functions below on any kind of 
  * object defined by the user.
  */
+/*@{ */
 
 /*!
  * \brief Add an object to a container.
@@ -389,8 +402,9 @@
 	struct ao2_list *next;
 	void *obj;	/* pointer to the user portion of the object */
 };
-
-/*!
+/*@} */
+
+/*! \brief
  * ao2_callback() is a generic function that applies cb_fn() to all objects
  * in a container, as described below.
  * 
@@ -402,6 +416,7 @@
  * \return 	A pointer to the object found/marked, 
  * 		a pointer to a list of objects matching comparison function,
  * 		NULL if not found.
+ *
  * If the function returns any objects, their refcount is incremented,
  * and the caller is in charge of decrementing them once done.
  * Also, in case of multiple values returned, the list used
@@ -455,7 +470,7 @@
  */
 void *ao2_find(struct ao2_container *c, void *arg, enum search_flags flags);
 
-/*!
+/*! \brief
  *
  *
  * When we need to walk through a container, we use
@@ -504,8 +519,10 @@
  *
  */
 
-/*!
- * You are not supposed to know the internals of an iterator!
+/*! \brief 
+ * The Astobj2 iterator
+ *
+ * \note You are not supposed to know the internals of an iterator!
  * We would like the iterator to be opaque, unfortunately
  * its size needs to be known if we want to store it around
  * without too much trouble.
@@ -515,6 +532,7 @@
  * should be locked or not while navigating on it.
  * The iterator "points" to the current object, which is identified
  * by three values:
+ *
  * - a bucket number;
  * - the object_id, which is also the container version number
  *   when the object was inserted. This identifies the object
@@ -523,10 +541,10 @@
  * - a pointer, and a container version when we saved the pointer.
  *   If the container has not changed its version number, then we
  *   can safely follow the pointer to reach the object in constant time.
+ *
  * Details are in the implementation of ao2_iterator_next()
  * A freshly-initialized iterator has bucket=0, version = 0.
  */
-
 struct ao2_iterator {
 	/*! the container */
 	struct ao2_container *c;

Modified: team/russell/events/include/asterisk/callerid.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/callerid.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/callerid.h (original)
+++ team/russell/events/include/asterisk/callerid.h Tue Dec 11 13:34:39 2007
@@ -19,6 +19,8 @@
 /*! \file
  * \brief CallerID (and other GR30) management and generation
  * Includes code and algorithms from the Zapata library.
+ *
+ * \ref CID
  *
  */
 

Modified: team/russell/events/include/asterisk/causes.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/causes.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/causes.h (original)
+++ team/russell/events/include/asterisk/causes.h Tue Dec 11 13:34:39 2007
@@ -85,7 +85,11 @@
 - \ref app_dial.c
 */
 
-/* Causes for disconnection (from Q.931) */
+/*! \name Causes for disconnection (from Q.931) 
+	These are the internal cause codes used in Asterisk.
+	\ref AstCauses
+*/
+/*@{ */
 #define AST_CAUSE_UNALLOCATED				1
 #define AST_CAUSE_NO_ROUTE_TRANSIT_NET			2
 #define AST_CAUSE_NO_ROUTE_DESTINATION			3
@@ -140,5 +144,6 @@
 #define AST_CAUSE_UNREGISTERED				AST_CAUSE_NO_ROUTE_DESTINATION
 #define AST_CAUSE_NOTDEFINED 				0
 #define AST_CAUSE_NOSUCHDRIVER				AST_CAUSE_CHAN_NOT_IMPLEMENTED
+/*@{ */
 
 #endif /* _ASTERISK_CAUSES_H */

Modified: team/russell/events/include/asterisk/cdr.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/cdr.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/cdr.h (original)
+++ team/russell/events/include/asterisk/cdr.h Tue Dec 11 13:34:39 2007
@@ -30,16 +30,21 @@
 #define AST_CDR_FLAG_CHILD			(1 << 3)
 #define AST_CDR_FLAG_POST_DISABLED		(1 << 4)
 
+/*! \name CDR Flags */
+/*@{ */
 #define AST_CDR_NULL                0
 #define AST_CDR_FAILED				(1 << 0)
 #define AST_CDR_BUSY				(1 << 1)
 #define AST_CDR_NOANSWER			(1 << 2)
 #define AST_CDR_ANSWERED			(1 << 3)
-
-/*! AMA Flags */
+/*@} */
+
+/*! \name CDR AMA Flags */
+/*@{ */
 #define AST_CDR_OMIT				(1)
 #define AST_CDR_BILLING				(2)
 #define AST_CDR_DOCUMENTATION			(3)
+/*@} */
 
 #define AST_MAX_USER_FIELD			256
 #define AST_MAX_ACCOUNT_CODE			20
@@ -48,7 +53,7 @@
 #include "asterisk/channel.h"
 #include "asterisk/utils.h"
 
-/*! Responsible for call detail data */
+/*! \brief Responsible for call detail data */
 struct ast_cdr {
 	/*! Caller*ID with text */
 	char clid[AST_MAX_EXTENSION];
@@ -298,11 +303,15 @@
  */
 void ast_cdr_merge(struct ast_cdr *to, struct ast_cdr *from);
 
+/*! \brief Set account code, will generate AMI event */
 int ast_cdr_setaccount(struct ast_channel *chan, const char *account);
+
+/*! \brief Set AMA flags for channel */
 int ast_cdr_setamaflags(struct ast_channel *chan, const char *amaflags);
 
-
+/*! \brief Set CDR user field for channel (stored in CDR) */
 int ast_cdr_setuserfield(struct ast_channel *chan, const char *userfield);
+/*! \brief Append to CDR user field for channel (stored in CDR) */
 int ast_cdr_appenduserfield(struct ast_channel *chan, const char *userfield);
 
 
@@ -316,10 +325,10 @@
 
 struct ast_cdr *ast_cdr_append(struct ast_cdr *cdr, struct ast_cdr *newcdr);
 
-/*! Reload the configuration file cdr.conf and start/stop CDR scheduling thread */
+/*! \brief Reload the configuration file cdr.conf and start/stop CDR scheduling thread */
 int ast_cdr_engine_reload(void);
 
-/*! Load the configuration file cdr.conf and possibly start the CDR scheduling thread */
+/*! \brief Load the configuration file cdr.conf and possibly start the CDR scheduling thread */
 int ast_cdr_engine_init(void);
 
 /*! Submit any remaining CDRs and prepare for shutdown */

Modified: team/russell/events/include/asterisk/devicestate.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/devicestate.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/devicestate.h (original)
+++ team/russell/events/include/asterisk/devicestate.h Tue Dec 11 13:34:39 2007
@@ -41,7 +41,7 @@
 extern "C" {
 #endif
 
-/*! Device States 
+/*! \brief Device States 
  *  \note The order of these states may not change because they are included
  *        in Asterisk events which may be transmitted across the network to
  *        other servers.

Modified: team/russell/events/include/asterisk/doxyref.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/doxyref.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/doxyref.h (original)
+++ team/russell/events/include/asterisk/doxyref.h Tue Dec 11 13:34:39 2007
@@ -350,7 +350,6 @@
  * \arg Implemented in \ref chan_h323.c
  * \section h323conf h323.conf
  * \ref chan_h323.c
- * \verbinclude h323.txt
  */
 
 /*! \page Config_oss OSS configuration

Modified: team/russell/events/include/asterisk/dsp.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/dsp.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/dsp.h (original)
+++ team/russell/events/include/asterisk/dsp.h Tue Dec 11 13:34:39 2007
@@ -28,18 +28,18 @@
 #define DSP_FEATURE_DTMF_DETECT		(1 << 3)
 #define DSP_FEATURE_FAX_DETECT		(1 << 4)
 
-#define	DSP_DIGITMODE_DTMF			0				/* Detect DTMF digits */
-#define DSP_DIGITMODE_MF			1				/* Detect MF digits */
+#define	DSP_DIGITMODE_DTMF			0				/*!< Detect DTMF digits */
+#define DSP_DIGITMODE_MF			1				/*!< Detect MF digits */
 
-#define DSP_DIGITMODE_NOQUELCH		(1 << 8)		/* Do not quelch DTMF from in-band */
-#define DSP_DIGITMODE_MUTECONF		(1 << 9)		/* Mute conference */
-#define DSP_DIGITMODE_MUTEMAX		(1 << 10)		/* Delay audio by a frame to try to extra quelch */
-#define DSP_DIGITMODE_RELAXDTMF		(1 << 11)		/* "Radio" mode (relaxed DTMF) */
+#define DSP_DIGITMODE_NOQUELCH		(1 << 8)		/*!< Do not quelch DTMF from in-band */
+#define DSP_DIGITMODE_MUTECONF		(1 << 9)		/*!< Mute conference */
+#define DSP_DIGITMODE_MUTEMAX		(1 << 10)		/*!< Delay audio by a frame to try to extra quelch */
+#define DSP_DIGITMODE_RELAXDTMF		(1 << 11)		/*!< "Radio" mode (relaxed DTMF) */
 
-#define DSP_PROGRESS_TALK		(1 << 16)		/* Enable talk detection */
-#define DSP_PROGRESS_RINGING		(1 << 17)		/* Enable calling tone detection */
-#define DSP_PROGRESS_BUSY		(1 << 18)		/* Enable busy tone detection */
-#define DSP_PROGRESS_CONGESTION		(1 << 19)		/* Enable congestion tone detection */
+#define DSP_PROGRESS_TALK		(1 << 16)		/*!< Enable talk detection */
+#define DSP_PROGRESS_RINGING		(1 << 17)		/*!< Enable calling tone detection */
+#define DSP_PROGRESS_BUSY		(1 << 18)		/*!< Enable busy tone detection */
+#define DSP_PROGRESS_CONGESTION		(1 << 19)		/*!< Enable congestion tone detection */
 #define DSP_FEATURE_CALL_PROGRESS	(DSP_PROGRESS_TALK | DSP_PROGRESS_RINGING | DSP_PROGRESS_BUSY | DSP_PROGRESS_CONGESTION)
 
 #define DSP_TONE_STATE_SILENCE  0

Modified: team/russell/events/include/asterisk/event.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/event.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/event.h (original)
+++ team/russell/events/include/asterisk/event.h Tue Dec 11 13:34:39 2007
@@ -19,7 +19,8 @@
 /*!
  * \file
  * \author Russell Bryant <russell at digium.com>
- * \brief Generic event system
+ * \ref AstGenericEvents
+ * \page AstGenericEvents Generic event system
  *
  * The purpose of this API is to provide a generic way to share events between
  * Asterisk modules.  Code can generate events, and other code can subscribe to

Modified: team/russell/events/include/asterisk/extconf.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/extconf.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/extconf.h (original)
+++ team/russell/events/include/asterisk/extconf.h Tue Dec 11 13:34:39 2007
@@ -14,6 +14,10 @@
  * This program is free software, distributed under the terms of
  * the GNU General Public License Version 2. See the LICENSE file
  * at the top of the source tree.
+ */
+/*! \file External configuration handlers (realtime and static configuration)
+ *  \author Steve Murphy <murf at digium.com>
+ *
  */
 
 #ifndef _ASTERISK_EXTCONF_H
@@ -68,7 +72,7 @@
 
 /* ================== above: the config world; below, the dialplan world */
 
-/*! \brief ast_app: A registered application */
+/*! \brief A registered application */
 struct ast_app {
 	int (*execute)(struct ast_channel *chan, void *data);
 	const char *synopsis;			/*!< Synopsis text for 'show applications' */
@@ -78,7 +82,7 @@
 	char name[0];				/*!< Name of the application */
 };
 /*!
-   \brief ast_exten: An extension
+   \brief An extension
 	The dialplan is saved as a linked list with each context
 	having it's own linked list of extensions - one item per
 	priority.
@@ -108,7 +112,7 @@
 	unsigned int dowmask;			/*!< Mask for day of week (mon-sun) */
 	unsigned int minmask[24];		/*!< Mask for minute */
 };
-/*! \brief ast_include: include= support in extensions.conf */
+/*! \brief include= support in extensions.conf */
 struct ast_include {
 	const char *name;
 	const char *rname;			/*!< Context to include */
@@ -119,7 +123,7 @@
 	char stuff[0];
 };
 
-/*! \brief ast_sw: Switch statement in extensions.conf */
+/*! \brief Switch statement in extensions.conf */
 struct ast_sw {
 	char *name;
 	const char *registrar;			/*!< Registrar */
@@ -130,14 +134,14 @@
 	char stuff[0];
 };
 
-*! \brief ast_ignorepat: Ignore patterns in dial plan */
+*! \brief Ignore patterns in dial plan */
 struct ast_ignorepat {
 	const char *registrar;
 	struct ast_ignorepat *next;
 	const char pattern[0];
 };
 
-/*! \brief ast_context: An extension context */
+/*! \brief An extension context */
 struct ast_context {
 	ast_rwlock_t lock; 			/*!< A lock to prevent multiple threads from clobbering the context */
 	struct ast_exten *root;			/*!< The root of the list of extensions */

Modified: team/russell/events/include/asterisk/hashtab.h
URL: http://svn.digium.com/view/asterisk/team/russell/events/include/asterisk/hashtab.h?view=diff&rev=92360&r1=92359&r2=92360
==============================================================================
--- team/russell/events/include/asterisk/hashtab.h (original)
+++ team/russell/events/include/asterisk/hashtab.h Tue Dec 11 13:34:39 2007
@@ -21,8 +21,9 @@
 
 /*! \file
  * \brief Generic (perhaps overly so) hashtable implementation
-*/
-/*! \note
+ * \ref AstHash
+ */
+/*! \page AstHash Hash Table support in Asterisk
 

[... 201 lines stripped ...]



More information about the asterisk-commits mailing list