- Don't return AST_DEVICE_UNKNOWN to devicestate engine, since this will

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
1.4
Olle Johansson 19 years ago
parent 982a66a93a
commit 37ff50a890

@ -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 */

@ -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;

Loading…
Cancel
Save