Deprecate *_device_state_* APIs in favor of *_devstate_* APIs

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@133860 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Tilghman Lesher
2008-07-25 21:20:03 +00:00
parent fd845ffb5e
commit 0c23159464
8 changed files with 75 additions and 38 deletions

View File

@@ -1364,7 +1364,7 @@ void ast_channel_free(struct ast_channel *chan)
ast_free(chan);
AST_RWLIST_UNLOCK(&channels);
ast_device_state_changed_literal(name);
ast_devstate_changed_literal(AST_DEVICE_NOT_INUSE, name);
}
struct ast_datastore *ast_channel_datastore_alloc(const struct ast_datastore_info *info, const char *uid)
@@ -4100,7 +4100,7 @@ int ast_setstate(struct ast_channel *chan, enum ast_channel_state state)
}
chan->_state = state;
ast_device_state_changed_literal(name);
ast_devstate_changed_literal(ast_state_chan2dev(state), name);
/* setstate used to conditionally report Newchannel; this is no more */
manager_event(EVENT_FLAG_CALL,
"Newstate",

View File

@@ -140,6 +140,24 @@ static const char *devstatestring[] = {
/* 8 AST_DEVICE_ONHOLD */ "On Hold" /*!< On Hold */
};
/*!\brief Mapping for channel states to device states */
static const struct chan2dev {
enum ast_channel_state chan;
enum ast_device_state dev;
} chan2dev[] = {
{ AST_STATE_DOWN, AST_DEVICE_NOT_INUSE },
{ AST_STATE_RESERVED, AST_DEVICE_INUSE },
{ AST_STATE_OFFHOOK, AST_DEVICE_INUSE },
{ AST_STATE_DIALING, AST_DEVICE_INUSE },
{ AST_STATE_RING, AST_DEVICE_INUSE },
{ AST_STATE_RINGING, AST_DEVICE_RINGING },
{ AST_STATE_UP, AST_DEVICE_INUSE },
{ AST_STATE_BUSY, AST_DEVICE_BUSY },
{ AST_STATE_DIALING_OFFHOOK, AST_DEVICE_INUSE },
{ AST_STATE_PRERING, AST_DEVICE_RINGING },
{ -100, -100 },
};
/*! \brief A device state provider (not a channel) */
struct devstate_prov {
char label[40];
@@ -202,6 +220,18 @@ const char *devstate2str(enum ast_device_state devstate)
return devstatestring[devstate];
}
enum ast_device_state ast_state_chan2dev(enum ast_channel_state chanstate)
{
int i;
chanstate &= 0xFFFF;
for (i = 0; chan2dev[i].chan != -100; i++) {
if (chan2dev[i].chan == chanstate) {
return chan2dev[i].dev;
}
}
return AST_DEVICE_UNKNOWN;
}
const char *ast_devstate_str(enum ast_device_state state)
{
const char *res = "UNKNOWN";