Channel states. More...
#include "asterisk.h"
Go to the source code of this file.
Enumerations | |
enum | ast_channel_state { AST_STATE_DOWN, AST_STATE_RESERVED, AST_STATE_OFFHOOK, AST_STATE_DIALING, AST_STATE_RING, AST_STATE_RINGING, AST_STATE_UP, AST_STATE_BUSY, AST_STATE_DIALING_OFFHOOK, AST_STATE_PRERING, AST_STATE_MUTE = (1 << 16) } |
ast_channel states More... | |
Functions | |
int | ast_setstate (struct ast_channel *chan, enum ast_channel_state) |
Change the state of a channel. |
Channel states.
Definition in file channelstate.h.
enum ast_channel_state |
ast_channel states
Definition at line 35 of file channelstate.h.
00035 { 00036 AST_STATE_DOWN, /*!< Channel is down and available */ 00037 AST_STATE_RESERVED, /*!< Channel is down, but reserved */ 00038 AST_STATE_OFFHOOK, /*!< Channel is off hook */ 00039 AST_STATE_DIALING, /*!< Digits (or equivalent) have been dialed */ 00040 AST_STATE_RING, /*!< Line is ringing */ 00041 AST_STATE_RINGING, /*!< Remote end is ringing */ 00042 AST_STATE_UP, /*!< Line is up */ 00043 AST_STATE_BUSY, /*!< Line is busy */ 00044 AST_STATE_DIALING_OFFHOOK, /*!< Digits (or equivalent) have been dialed while offhook */ 00045 AST_STATE_PRERING, /*!< Channel has detected an incoming call and is waiting for ring */ 00046 00047 AST_STATE_MUTE = (1 << 16), /*!< Do not transmit voice data */ 00048 };
int ast_setstate | ( | struct ast_channel * | chan, | |
enum | ast_channel_state | |||
) |
Change the state of a channel.
Definition at line 7045 of file channel.c.
References ast_channel::_state, AST_CHANNEL_NAME, ast_copy_string(), AST_DEVICE_UNKNOWN, AST_DEVSTATE_CACHABLE, ast_devstate_changed_literal(), AST_DEVSTATE_NOT_CACHABLE, AST_FLAG_DISABLE_DEVSTATE_CACHE, ast_manager_event, ast_state2str(), ast_channel::caller, ast_channel::connected, EVENT_FLAG_CALL, ast_channel::flags, ast_party_connected_line::id, ast_party_caller::id, ast_party_id::name, name, ast_party_id::number, S_COR, ast_party_name::str, ast_party_number::str, ast_party_name::valid, and ast_party_number::valid.
Referenced by __analog_handle_event(), __analog_ss_thread(), __ast_read(), __dahdi_exception(), __oh323_update_info(), agent_call(), alsa_answer(), analog_answer(), analog_call(), analog_exception(), analog_ss_thread(), ast_raw_answer(), cb_events(), check_availability(), console_answer(), dahdi_answer(), dahdi_call(), dahdi_handle_event(), dahdi_indicate(), dahdi_read(), do_bridge_masquerade(), gtalk_call(), gtalk_newcall(), handle_invite_replaces(), handle_offhook_message(), handle_request_invite(), handle_response_invite(), handle_soft_key_event_message(), handle_stimulus_message(), iax2_call(), jingle_call(), jingle_newcall(), local_queue_frame(), mgcp_answer(), mgcp_call(), mgcp_ss(), misdn_call(), misdn_indication(), my_set_waitingfordt(), nbs_call(), nbs_hangup(), oh323_answer(), oss_answer(), pbx_builtin_busy(), pbx_builtin_congestion(), phone_answer(), phone_call(), phone_exception(), phone_hangup(), phone_write(), release_chan(), release_chan_early(), sip_answer(), skinny_answer(), skinny_call(), skinny_newcall(), unistim_answer(), unistim_call(), unistim_new(), unistim_ss(), and update_state().
07046 { 07047 int oldstate = chan->_state; 07048 char name[AST_CHANNEL_NAME], *dashptr; 07049 07050 if (oldstate == state) 07051 return 0; 07052 07053 ast_copy_string(name, chan->name, sizeof(name)); 07054 if ((dashptr = strrchr(name, '-'))) { 07055 *dashptr = '\0'; 07056 } 07057 07058 chan->_state = state; 07059 07060 /* We have to pass AST_DEVICE_UNKNOWN here because it is entirely possible that the channel driver 07061 * for this channel is using the callback method for device state. If we pass in an actual state here 07062 * we override what they are saying the state is and things go amuck. */ 07063 ast_devstate_changed_literal(AST_DEVICE_UNKNOWN, (chan->flags & AST_FLAG_DISABLE_DEVSTATE_CACHE ? AST_DEVSTATE_NOT_CACHABLE : AST_DEVSTATE_CACHABLE), name); 07064 07065 /* setstate used to conditionally report Newchannel; this is no more */ 07066 ast_manager_event(chan, EVENT_FLAG_CALL, "Newstate", 07067 "Channel: %s\r\n" 07068 "ChannelState: %d\r\n" 07069 "ChannelStateDesc: %s\r\n" 07070 "CallerIDNum: %s\r\n" 07071 "CallerIDName: %s\r\n" 07072 "ConnectedLineNum: %s\r\n" 07073 "ConnectedLineName: %s\r\n" 07074 "Uniqueid: %s\r\n", 07075 chan->name, chan->_state, ast_state2str(chan->_state), 07076 S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, ""), 07077 S_COR(chan->caller.id.name.valid, chan->caller.id.name.str, ""), 07078 S_COR(chan->connected.id.number.valid, chan->connected.id.number.str, ""), 07079 S_COR(chan->connected.id.name.valid, chan->connected.id.name.str, ""), 07080 chan->uniqueid); 07081 07082 return 0; 07083 }