diff options
Diffstat (limited to 'include/asterisk/pbx.h')
-rw-r--r-- | include/asterisk/pbx.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/include/asterisk/pbx.h b/include/asterisk/pbx.h index 0ac09f39d..11aa57be4 100644 --- a/include/asterisk/pbx.h +++ b/include/asterisk/pbx.h @@ -26,6 +26,7 @@ #include "asterisk/sched.h" #include "asterisk/channel.h" #include "asterisk/linkedlists.h" +#include "asterisk/devicestate.h" #if defined(__cplusplus) || defined(c_plusplus) extern "C" { @@ -305,6 +306,64 @@ int ast_register_application(const char *app, int (*execute)(struct ast_channel */ int ast_unregister_application(const char *app); +/*! + * \brief An object to hold state when calculating aggregate device state + */ +struct ast_devstate_aggregate; + +/*! + * \brief Initialize aggregate device state + * + * \param[in] agg the state object + * + * \return nothing + */ +void ast_devstate_aggregate_init(struct ast_devstate_aggregate *agg); + +/*! + * \brief Add a device state to the aggregate device state + * + * \param[in] agg the state object + * \param[in] state the state to add + * + * \return nothing + */ +void ast_devstate_aggregate_add(struct ast_devstate_aggregate *agg, enum ast_device_state state); + +/*! + * \brief Get the aggregate device state result + * + * \param[in] agg the state object + * + * \return the aggregate device state after adding some number of device states. + */ +enum ast_device_state ast_devstate_aggregate_result(struct ast_devstate_aggregate *agg); + +/*! + * \brief Map devstate to an extension state. + * + * \param[in] device state + * + * \return the extension state mapping. + */ +enum ast_extension_states ast_devstate_to_extenstate(enum ast_device_state devstate); + +/*! + * \brief You shouldn't care about the contents of this struct + * + * This struct is only here so that it can be easily declared on the stack. + */ +struct ast_devstate_aggregate { + unsigned int all_unavail:1; + unsigned int all_busy:1; + unsigned int all_free:1; + unsigned int all_unknown:1; + unsigned int on_hold:1; + unsigned int busy:1; + unsigned int in_use:1; + unsigned int ring:1; +}; + /*! * \brief Uses hint and devicestate callback to get the state of an extension * |