Device state management. More...
#include "asterisk/channelstate.h"
Go to the source code of this file.
Data Structures | |
struct | ast_devstate_aggregate |
You shouldn't care about the contents of this struct. More... | |
Typedefs | |
typedef enum ast_device_state(* | ast_devstate_prov_cb_type )(const char *data) |
Devicestate provider call back. More... | |
Enumerations | |
enum | ast_device_state { AST_DEVICE_UNKNOWN, AST_DEVICE_NOT_INUSE, AST_DEVICE_INUSE, AST_DEVICE_BUSY, AST_DEVICE_INVALID, AST_DEVICE_UNAVAILABLE, AST_DEVICE_RINGING, AST_DEVICE_RINGINUSE, AST_DEVICE_ONHOLD, AST_DEVICE_TOTAL } |
Device States. More... | |
enum | ast_devstate_cache { AST_DEVSTATE_NOT_CACHABLE, AST_DEVSTATE_CACHABLE } |
Device State Cachability. More... | |
Functions | |
enum ast_device_state | ast_device_state (const char *device) |
Asks a channel for device state. More... | |
int | ast_device_state_changed (const char *fmt,...) |
Tells Asterisk the State for Device is changed. (Accept change notification, add it to change queue.) More... | |
int | ast_device_state_changed_literal (const char *device) |
Tells Asterisk the State for Device is changed. More... | |
const char * | ast_devstate2str (enum ast_device_state devstate) attribute_pure |
Find devicestate as text message for output. More... | |
void | ast_devstate_aggregate_add (struct ast_devstate_aggregate *agg, enum ast_device_state state) |
Add a device state to the aggregate device state. More... | |
void | ast_devstate_aggregate_init (struct ast_devstate_aggregate *agg) |
Initialize aggregate device state. More... | |
enum ast_device_state | ast_devstate_aggregate_result (struct ast_devstate_aggregate *agg) |
Get the aggregate device state result. More... | |
int | ast_devstate_changed (enum ast_device_state state, enum ast_devstate_cache cachable, const char *fmt,...) |
Tells Asterisk the State for Device is changed. More... | |
int | ast_devstate_changed_literal (enum ast_device_state state, enum ast_devstate_cache cachable, const char *device) |
Tells Asterisk the State for Device is changed. More... | |
int | ast_devstate_prov_add (const char *label, ast_devstate_prov_cb_type callback) |
Add device state provider. More... | |
int | ast_devstate_prov_del (const char *label) |
Remove device state provider. More... | |
const char * | ast_devstate_str (enum ast_device_state devstate) attribute_pure |
Convert device state to text string that is easier to parse. More... | |
enum ast_device_state | ast_devstate_val (const char *val) |
Convert device state from text to integer value. More... | |
int | ast_enable_distributed_devstate (void) |
Enable distributed device state processing. More... | |
enum ast_device_state | ast_parse_device_state (const char *device) |
Search the Channels by Name. More... | |
enum ast_device_state | ast_state_chan2dev (enum ast_channel_state chanstate) |
Convert channel state to devicestate. More... | |
const char * | devstate2str (enum ast_device_state devstate) attribute_pure |
Convert device state to text string for output. More... | |
Device state management.
To subscribe to device state changes, use the generic ast_event_subscribe method. For an example, see apps/app_queue.c.
Definition in file devicestate.h.
typedef enum ast_device_state(* ast_devstate_prov_cb_type)(const char *data) |
Devicestate provider call back.
Definition at line 73 of file devicestate.h.
enum ast_device_state |
Device States.
Definition at line 51 of file devicestate.h.
enum ast_devstate_cache |
Device State Cachability.
Enumerator | |
---|---|
AST_DEVSTATE_NOT_CACHABLE |
This device state is not cachable |
AST_DEVSTATE_CACHABLE |
This device state is cachable |
Definition at line 67 of file devicestate.h.
enum ast_device_state ast_device_state | ( | const char * | device | ) |
Asks a channel for device state.
device | like a dial string |
Asks a channel for device state, data is normally a number from a dial string used by the low level module Tries the channel device state callback if not supported search in the active channels list for the device.
an | AST_DEVICE_??? state |
Definition at line 362 of file devicestate.c.
References _ast_device_state().
int ast_device_state_changed | ( | const char * | fmt, |
... | |||
) |
Tells Asterisk the State for Device is changed. (Accept change notification, add it to change queue.)
fmt | device name like a dial string with format parameters |
Asterisk polls the new extension states and calls the registered callbacks for the changed extensions
0 | on success |
-1 | on failure |
Definition at line 528 of file devicestate.c.
References AST_DEVICE_UNKNOWN, AST_DEVSTATE_CACHABLE, ast_devstate_changed_literal(), and AST_MAX_EXTENSION.
int ast_device_state_changed_literal | ( | const char * | device | ) |
Tells Asterisk the State for Device is changed.
device | device name like a dial string |
Asterisk polls the new extension states and calls the registered callbacks for the changed extensions
0 | on success |
-1 | on failure |
Definition at line 511 of file devicestate.c.
References AST_DEVICE_UNKNOWN, AST_DEVSTATE_CACHABLE, and ast_devstate_changed_literal().
const char* ast_devstate2str | ( | enum ast_device_state | devstate | ) |
Find devicestate as text message for output.
Definition at line 215 of file devicestate.c.
Referenced by __queues_show(), do_state_change(), extension_state_cb(), handle_statechange(), notify_metermaids(), page_exec(), process_collection(), and queue_function_queuememberstatus().
void ast_devstate_aggregate_add | ( | struct ast_devstate_aggregate * | agg, |
enum ast_device_state | state | ||
) |
Add a device state to the aggregate device state.
[in] | agg | the state object |
[in] | state | the state to add |
Definition at line 764 of file devicestate.c.
References AST_DEVICE_BUSY, AST_DEVICE_INUSE, AST_DEVICE_ONHOLD, AST_DEVICE_RINGING, AST_DEVICE_RINGINUSE, ast_devstate_aggregate::inuse, ast_devstate_aggregate::ringing, ast_devstate_aggregate::state, and state.
Referenced by ast_extension_state3(), and process_collection().
void ast_devstate_aggregate_init | ( | struct ast_devstate_aggregate * | agg | ) |
Initialize aggregate device state.
[in] | agg | the state object |
Definition at line 758 of file devicestate.c.
References AST_DEVICE_INVALID, and ast_devstate_aggregate::state.
Referenced by ast_extension_state3(), and process_collection().
enum ast_device_state ast_devstate_aggregate_result | ( | struct ast_devstate_aggregate * | agg | ) |
Get the aggregate device state result.
[in] | agg | the state object |
Definition at line 791 of file devicestate.c.
References ast_devstate_aggregate::state.
Referenced by ast_extension_state3(), and process_collection().
int ast_devstate_changed | ( | enum ast_device_state | state, |
enum ast_devstate_cache | cachable, | ||
const char * | fmt, | ||
... | |||
) |
Tells Asterisk the State for Device is changed.
state | the new state of the device |
cachable | whether this device state is cachable |
fmt | device name like a dial string with format parameters |
The new state of the device will be sent off to any subscribers of device states. It will also be stored in the internal event cache.
0 | on success |
-1 | on failure |
Definition at line 516 of file devicestate.c.
References ast_devstate_changed_literal(), and AST_MAX_EXTENSION.
Referenced by __expire_registry(), __iax2_poke_noanswer(), calendar_devstate_change(), conf_run(), dahdi_pri_update_span_devstate(), destroy_event(), devstate_write(), expire_register(), handle_cli_devstate_change(), handle_offhook_message(), handle_onhook_message(), handle_response_peerpoke(), handle_soft_key_event_message(), handle_stimulus_message(), join_conference_bridge(), leave_conference_bridge(), load_module(), login_exec(), notify_metermaids(), reg_source_db(), register_verify(), sip_peer_hold(), sip_poke_noanswer(), skinny_register(), skinny_unregister(), sla_change_trunk_state(), sla_handle_hold_event(), sla_station_exec(), socket_process(), update_call_counter(), and update_registry().
int ast_devstate_changed_literal | ( | enum ast_device_state | state, |
enum ast_devstate_cache | cachable, | ||
const char * | device | ||
) |
Tells Asterisk the State for Device is changed.
state | the new state of the device |
cachable | whether this device state is cachable |
device | device name like a dial string with format parameters |
The new state of the device will be sent off to any subscribers of device states. It will also be stored in the internal event cache.
0 | on success |
-1 | on failure |
Definition at line 472 of file devicestate.c.
References ast_calloc, ast_cond_signal, AST_DEVICE_UNKNOWN, AST_LIST_INSERT_TAIL, AST_LIST_LOCK, AST_LIST_UNLOCK, state_change::cachable, change_thread, state_change::device, devstate_event(), and do_state_change().
Referenced by ast_channel_destructor(), ast_device_state_changed(), ast_device_state_changed_literal(), ast_devstate_changed(), ast_setstate(), and dahdi_new().
int ast_devstate_prov_add | ( | const char * | label, |
ast_devstate_prov_cb_type | callback | ||
) |
Add device state provider.
label | to use in hint, like label:object |
callback | Callback |
0 | success |
-1 | failure |
Definition at line 371 of file devicestate.c.
References ast_calloc, ast_copy_string(), AST_RWLIST_INSERT_HEAD, AST_RWLIST_UNLOCK, AST_RWLIST_WRLOCK, devstate_prov::callback, and devstate_prov::label.
Referenced by ast_features_init(), and load_module().
int ast_devstate_prov_del | ( | const char * | label | ) |
Remove device state provider.
label | to use in hint, like label:object |
-1 | on failure |
0 | on success |
Definition at line 389 of file devicestate.c.
References ast_free, AST_RWLIST_REMOVE_CURRENT, AST_RWLIST_TRAVERSE_SAFE_BEGIN, AST_RWLIST_TRAVERSE_SAFE_END, AST_RWLIST_UNLOCK, AST_RWLIST_WRLOCK, and devstate_prov::label.
Referenced by cc_shutdown(), features_shutdown(), and unload_module().
const char* ast_devstate_str | ( | enum ast_device_state | devstate | ) |
Convert device state to text string that is easier to parse.
devstate | Current device state |
Definition at line 239 of file devicestate.c.
References state.
Referenced by aji_devstate_cb(), and devstate_read().
enum ast_device_state ast_devstate_val | ( | const char * | val | ) |
Convert device state from text to integer value.
val | The text representing the device state. Valid values are anything that comes after AST_DEVICE_ in one of the defined values. |
Definition at line 244 of file devicestate.c.
References AST_DEVICE_BUSY, AST_DEVICE_INUSE, AST_DEVICE_INVALID, AST_DEVICE_NOT_INUSE, AST_DEVICE_ONHOLD, AST_DEVICE_RINGING, AST_DEVICE_RINGINUSE, AST_DEVICE_UNAVAILABLE, and AST_DEVICE_UNKNOWN.
Referenced by aji_handle_pubsub_event(), custom_devstate_callback(), devstate_write(), handle_cli_devstate_change(), and load_module().
int ast_enable_distributed_devstate | ( | void | ) |
Enable distributed device state processing.
By default, Asterisk assumes that device state change events will only be originating from one instance. If a module gets loaded and configured such that multiple instances of Asterisk will be sharing device state, this function should be called to enable distributed device state processing. It is off by default to save on unnecessary processing.
0 | success |
-1 | failure |
Definition at line 796 of file devicestate.c.
References ast_cond_init, AST_EVENT_DEVICE_STATE_CHANGE, AST_EVENT_IE_END, ast_event_subscribe(), ast_log(), ast_mutex_init, ast_pthread_create_background, devstate_change_collector_cb(), devstate_collector, LOG_ERROR, and run_devstate_collector().
Referenced by add_publish_event(), add_subscribe_event(), and aji_init_event_distribution().
enum ast_device_state ast_parse_device_state | ( | const char * | device | ) |
Search the Channels by Name.
device | like a dial string |
Search the Device in active channels by compare the channel name against the device name. Compared are only the first chars to the first '-' char.
AST_DEVICE_UNKNOWN | if no channel found |
AST_DEVICE_INUSE | if a channel is found |
Search the Channels by Name.
Definition at line 271 of file devicestate.c.
References ast_channel::_state, ast_channel_get_by_name_prefix(), AST_CHANNEL_NAME, ast_channel_unref, AST_DEVICE_INUSE, AST_DEVICE_RINGING, AST_DEVICE_UNKNOWN, AST_STATE_RINGING, and match().
Referenced by _ast_device_state(), and chanavail_exec().
enum ast_device_state ast_state_chan2dev | ( | enum ast_channel_state | chanstate | ) |
Convert channel state to devicestate.
chanstate | Current channel state |
Definition at line 226 of file devicestate.c.
References AST_DEVICE_UNKNOWN, chan2dev::chan, and chan2dev::dev.
const char* devstate2str | ( | enum ast_device_state | devstate | ) |
Convert device state to text string for output.
devstate | Current device state |
Definition at line 221 of file devicestate.c.