[svn-commits] trunk r17365 - in /trunk: channels/chan_sip.c
devicestate.c
svn-commits at lists.digium.com
svn-commits at lists.digium.com
Tue Apr 4 11:24:44 MST 2006
Author: oej
Date: Tue Apr 4 13:24:41 2006
New Revision: 17365
URL: http://svn.digium.com/view/asterisk?rev=17365&view=rev
Log:
- Don't return AST_DEVICE_UNKNOWN to devicestate engine, since this will
cause a channel walk...
- Doxygen fixed for devicestate.c
Modified:
trunk/channels/chan_sip.c
trunk/devicestate.c
Modified: trunk/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_sip.c?rev=17365&r1=17364&r2=17365&view=diff
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Tue Apr 4 13:24:41 2006
@@ -11835,12 +11835,16 @@
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 @@
res = AST_DEVICE_BUSY;
else if (p->call_limit && p->inUse)
res = AST_DEVICE_INUSE;
- else if (p->call_limit)
+ else
res = AST_DEVICE_NOT_INUSE;
- else
- res = AST_DEVICE_UNKNOWN;
}
} else {
/* there is no address, it's unavailable */
Modified: trunk/devicestate.c
URL: http://svn.digium.com/view/asterisk/trunk/devicestate.c?rev=17365&r1=17364&r2=17365&view=diff
==============================================================================
--- trunk/devicestate.c (original)
+++ trunk/devicestate.c Tue Apr 4 13:24:41 2006
@@ -42,17 +42,18 @@
#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 @@
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;
More information about the svn-commits
mailing list