aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2006-04-04 18:24:41 +0000
committeroej <oej@f38db490-d61c-443f-a65b-d21fe96a405b>2006-04-04 18:24:41 +0000
commit36b1ad24ac7061d1d053c1cb870351d694e70f68 (patch)
treee0007f263a52d64114a8389b19d1ffea2d2145f3
parente2b336affeb69d9733c1f7e4a05328145a8ebce8 (diff)
- Don't return AST_DEVICE_UNKNOWN to devicestate engine, since this will
cause a channel walk... - Doxygen fixed for devicestate.c git-svn-id: http://svn.digium.com/svn/asterisk/trunk@17365 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--channels/chan_sip.c14
-rw-r--r--devicestate.c23
2 files changed, 22 insertions, 15 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 76148cedf..0227773d7 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -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 */
diff --git a/devicestate.c b/devicestate.c
index 4131503c8..4bccfa5c3 100644
--- a/devicestate.c
+++ b/devicestate.c
@@ -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;