- Don't return AST_DEVICE_UNKNOWN to devicestate engine, since this will
authorOlle Johansson <oej@edvina.net>
Tue, 4 Apr 2006 18:24:41 +0000 (18:24 +0000)
committerOlle Johansson <oej@edvina.net>
Tue, 4 Apr 2006 18:24:41 +0000 (18:24 +0000)
  cause a channel walk...
- Doxygen fixed for devicestate.c

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@17365 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c
devicestate.c

index 76148ce..0227773 100644 (file)
@@ -11835,12 +11835,16 @@ static int sip_poke_peer(struct sip_peer *peer)
 
        For peers with call limit:
                - not registered                        AST_DEVICE_UNAVAILABLE
-               - registered, no call           AST_DEVICE_NOT_INUSE
-               - registered, calls possible    AST_DEVICE_INUSE
+               - registered, no call                   AST_DEVICE_NOT_INUSE
+               - registered, active calls              AST_DEVICE_INUSE
                - registered, call limit reached        AST_DEVICE_BUSY
        For peers without call limit:
                - not registered                        AST_DEVICE_UNAVAILABLE
-               - registered                    AST_DEVICE_UNKNOWN
+               - registered                            AST_DEVICE_NOT_INUSE
+               - fixed IP (!dynamic)                   AST_DEVICE_NOT_INUSE
+
+       If we return AST_DEVICE_UNKNOWN, the device state engine will try to find
+       out a state by walking the channel list.
 */
 static int sip_devicestate(void *data)
 {
@@ -11873,10 +11877,8 @@ static int sip_devicestate(void *data)
                                        res = AST_DEVICE_BUSY;
                                else if (p->call_limit && p->inUse)
                                        res = AST_DEVICE_INUSE;
-                               else if (p->call_limit)
-                                       res = AST_DEVICE_NOT_INUSE;
                                else
-                                       res = AST_DEVICE_UNKNOWN;
+                                       res = AST_DEVICE_NOT_INUSE;
                        }
                } else {
                        /* there is no address, it's unavailable */
index 4131503..4bccfa5 100644 (file)
@@ -42,17 +42,18 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 #include "asterisk/pbx.h"
 #include "asterisk/options.h"
 
+/*! \brief Device state strings for printing */
 static const char *devstatestring[] = {
-       /* 0 AST_DEVICE_UNKNOWN */      "Unknown",      /* Valid, but unknown state */
-       /* 1 AST_DEVICE_NOT_INUSE */    "Not in use",   /* Not used */
-       /* 2 AST_DEVICE IN USE */       "In use",       /* In use */
-       /* 3 AST_DEVICE_BUSY */         "Busy",         /* Busy */
-       /* 4 AST_DEVICE_INVALID */      "Invalid",      /* Invalid - not known to Asterisk */
-       /* 5 AST_DEVICE_UNAVAILABLE */  "Unavailable",  /* Unavailable (not registred) */
-       /* 6 AST_DEVICE_RINGING */      "Ringing"       /* Ring, ring, ring */
+       /* 0 AST_DEVICE_UNKNOWN */      "Unknown",      /*!< Valid, but unknown state */
+       /* 1 AST_DEVICE_NOT_INUSE */    "Not in use",   /*!< Not used */
+       /* 2 AST_DEVICE IN USE */       "In use",       /*!< In use */
+       /* 3 AST_DEVICE_BUSY */         "Busy",         /*!< Busy */
+       /* 4 AST_DEVICE_INVALID */      "Invalid",      /*!< Invalid - not known to Asterisk */
+       /* 5 AST_DEVICE_UNAVAILABLE */  "Unavailable",  /*!< Unavailable (not registred) */
+       /* 6 AST_DEVICE_RINGING */      "Ringing"       /*!< Ring, ring, ring */
 };
 
-/* ast_devstate_cb: A device state watcher (callback) */
+/*! \brief  A device state watcher (callback) */
 struct devstate_cb {
        void *data;
        ast_devstate_cb_type callback;
@@ -77,7 +78,11 @@ const char *devstate2str(int devstate)
        return devstatestring[devstate];
 }
 
-/*! \brief Find out if device is active in a call or not */
+/*! \brief Find out if device is active in a call or not 
+\note find channels with the device's name in it
+This function is only used for channels that does not implement 
+devicestate natively
+*/
 int ast_parse_device_state(const char *device)
 {
        struct ast_channel *chan;