summaryrefslogtreecommitdiff
path: root/main/devicestate.c
diff options
context:
space:
mode:
authorTilghman Lesher <tilghman@meg.abyt.es>2008-07-25 21:20:03 +0000
committerTilghman Lesher <tilghman@meg.abyt.es>2008-07-25 21:20:03 +0000
commit0c23159464d1374df2aa92f3266aaec644acec9c (patch)
tree038b9bed08ac145034dbf25e6a9d28b74c00ea93 /main/devicestate.c
parentfd845ffb5ecf5d215be3e13ff91ef83524ccade5 (diff)
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
Diffstat (limited to 'main/devicestate.c')
-rw-r--r--main/devicestate.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/main/devicestate.c b/main/devicestate.c
index c7fe08e39..1bf19f6b0 100644
--- a/main/devicestate.c
+++ b/main/devicestate.c
@@ -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";