|
|
|
@ -37,6 +37,7 @@
|
|
|
|
|
#include "asterisk/config.h"
|
|
|
|
|
#include "asterisk/module.h"
|
|
|
|
|
#include "asterisk/astobj.h"
|
|
|
|
|
#include "asterisk/optional_api.h"
|
|
|
|
|
|
|
|
|
|
#define SMDI_MESG_DESK_NUM_LEN 3
|
|
|
|
|
#define SMDI_MESG_DESK_TERM_LEN 4
|
|
|
|
@ -84,7 +85,8 @@ struct ast_smdi_md_message {
|
|
|
|
|
*/
|
|
|
|
|
struct ast_smdi_interface;
|
|
|
|
|
|
|
|
|
|
void ast_smdi_interface_unref(struct ast_smdi_interface *iface);
|
|
|
|
|
AST_OPTIONAL_API(void, ast_smdi_interface_unref, (struct ast_smdi_interface
|
|
|
|
|
*iface), { return; });
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
|
* \brief Get the next SMDI message from the queue.
|
|
|
|
@ -96,7 +98,8 @@ void ast_smdi_interface_unref(struct ast_smdi_interface *iface);
|
|
|
|
|
*
|
|
|
|
|
* \return the next SMDI message, or NULL if there were no pending messages.
|
|
|
|
|
*/
|
|
|
|
|
struct ast_smdi_md_message *ast_smdi_md_message_pop(struct ast_smdi_interface *iface);
|
|
|
|
|
AST_OPTIONAL_API(struct ast_smdi_md_message *, ast_smdi_md_message_pop, (struct
|
|
|
|
|
ast_smdi_interface *iface), { return NULL; });
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
|
* \brief Get the next SMDI message from the queue.
|
|
|
|
@ -110,7 +113,8 @@ struct ast_smdi_md_message *ast_smdi_md_message_pop(struct ast_smdi_interface *i
|
|
|
|
|
* \return the next SMDI message, or NULL if there were no pending messages and
|
|
|
|
|
* the timeout has expired.
|
|
|
|
|
*/
|
|
|
|
|
struct ast_smdi_md_message *ast_smdi_md_message_wait(struct ast_smdi_interface *iface, int timeout);
|
|
|
|
|
AST_OPTIONAL_API(struct ast_smdi_md_message *, ast_smdi_md_message_wait,
|
|
|
|
|
(struct ast_smdi_interface *iface, int timeout), { return NULL; });
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
|
* \brief Put an SMDI message back in the front of the queue.
|
|
|
|
@ -121,7 +125,8 @@ struct ast_smdi_md_message *ast_smdi_md_message_wait(struct ast_smdi_interface *
|
|
|
|
|
* should be used if a message was popped but is not going to be processed for
|
|
|
|
|
* some reason, and the message needs to be returned to the queue.
|
|
|
|
|
*/
|
|
|
|
|
void ast_smdi_md_message_putback(struct ast_smdi_interface *iface, struct ast_smdi_md_message *msg);
|
|
|
|
|
AST_OPTIONAL_API(void, ast_smdi_md_message_putback, (struct ast_smdi_interface
|
|
|
|
|
*iface, struct ast_smdi_md_message *msg), { return; });
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
|
* \brief Get the next SMDI message from the queue.
|
|
|
|
@ -133,7 +138,8 @@ void ast_smdi_md_message_putback(struct ast_smdi_interface *iface, struct ast_sm
|
|
|
|
|
*
|
|
|
|
|
* \return the next SMDI message, or NULL if there were no pending messages.
|
|
|
|
|
*/
|
|
|
|
|
struct ast_smdi_mwi_message *ast_smdi_mwi_message_pop(struct ast_smdi_interface *iface);
|
|
|
|
|
AST_OPTIONAL_API(struct ast_smdi_mwi_message *, ast_smdi_mwi_message_pop,
|
|
|
|
|
(struct ast_smdi_interface *iface), { return NULL; });
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
|
* \brief Get the next SMDI message from the queue.
|
|
|
|
@ -147,9 +153,11 @@ struct ast_smdi_mwi_message *ast_smdi_mwi_message_pop(struct ast_smdi_interface
|
|
|
|
|
* \return the next SMDI message, or NULL if there were no pending messages and
|
|
|
|
|
* the timeout has expired.
|
|
|
|
|
*/
|
|
|
|
|
struct ast_smdi_mwi_message *ast_smdi_mwi_message_wait(struct ast_smdi_interface *iface, int timeout);
|
|
|
|
|
struct ast_smdi_mwi_message *ast_smdi_mwi_message_wait_station(struct ast_smdi_interface *iface,
|
|
|
|
|
int timeout, const char *station);
|
|
|
|
|
AST_OPTIONAL_API(struct ast_smdi_mwi_message *, ast_smdi_mwi_message_wait,
|
|
|
|
|
(struct ast_smdi_interface *iface, int timeout), { return NULL; });
|
|
|
|
|
AST_OPTIONAL_API(struct ast_smdi_mwi_message *,
|
|
|
|
|
ast_smdi_mwi_message_wait_station, (struct ast_smdi_interface *iface, int
|
|
|
|
|
timeout, const char *station), { return NULL; });
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
|
* \brief Put an SMDI message back in the front of the queue.
|
|
|
|
@ -160,7 +168,8 @@ struct ast_smdi_mwi_message *ast_smdi_mwi_message_wait_station(struct ast_smdi_i
|
|
|
|
|
* should be used if a message was popped but is not going to be processed for
|
|
|
|
|
* some reason, and the message needs to be returned to the queue.
|
|
|
|
|
*/
|
|
|
|
|
void ast_smdi_mwi_message_putback(struct ast_smdi_interface *iface, struct ast_smdi_mwi_message *msg);
|
|
|
|
|
AST_OPTIONAL_API(void, ast_smdi_mwi_message_putback, (struct ast_smdi_interface
|
|
|
|
|
*iface, struct ast_smdi_mwi_message *msg), { return; });
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
|
* \brief Find an SMDI interface with the specified name.
|
|
|
|
@ -170,26 +179,31 @@ void ast_smdi_mwi_message_putback(struct ast_smdi_interface *iface, struct ast_s
|
|
|
|
|
* actually returns an ASTOBJ reference and should be released using
|
|
|
|
|
* #ASTOBJ_UNREF(iface, ast_smdi_interface_destroy).
|
|
|
|
|
*/
|
|
|
|
|
struct ast_smdi_interface *ast_smdi_interface_find(const char *iface_name);
|
|
|
|
|
AST_OPTIONAL_API(struct ast_smdi_interface *, ast_smdi_interface_find,
|
|
|
|
|
(const char *iface_name), { return NULL; });
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
|
* \brief Set the MWI indicator for a mailbox.
|
|
|
|
|
* \param iface the interface to use.
|
|
|
|
|
* \param mailbox the mailbox to use.
|
|
|
|
|
*/
|
|
|
|
|
int ast_smdi_mwi_set(struct ast_smdi_interface *iface, const char *mailbox);
|
|
|
|
|
AST_OPTIONAL_API(int, ast_smdi_mwi_set, (struct ast_smdi_interface *iface,
|
|
|
|
|
const char *mailbox), { return -1; });
|
|
|
|
|
|
|
|
|
|
/*!
|
|
|
|
|
* \brief Unset the MWI indicator for a mailbox.
|
|
|
|
|
* \param iface the interface to use.
|
|
|
|
|
* \param mailbox the mailbox to use.
|
|
|
|
|
*/
|
|
|
|
|
int ast_smdi_mwi_unset(struct ast_smdi_interface *iface, const char *mailbox);
|
|
|
|
|
AST_OPTIONAL_API(int, ast_smdi_mwi_unset, (struct ast_smdi_interface *iface,
|
|
|
|
|
const char *mailbox), { return -1; });
|
|
|
|
|
|
|
|
|
|
/*! \brief ast_smdi_md_message destructor. */
|
|
|
|
|
void ast_smdi_md_message_destroy(struct ast_smdi_md_message *msg);
|
|
|
|
|
AST_OPTIONAL_API(void, ast_smdi_md_message_destroy,
|
|
|
|
|
(struct ast_smdi_md_message *msg), { return; });
|
|
|
|
|
|
|
|
|
|
/*! \brief ast_smdi_mwi_message destructor. */
|
|
|
|
|
void ast_smdi_mwi_message_destroy(struct ast_smdi_mwi_message *msg);
|
|
|
|
|
AST_OPTIONAL_API(void, ast_smdi_mwi_message_destroy, (struct
|
|
|
|
|
ast_smdi_mwi_message *msg), { return; });
|
|
|
|
|
|
|
|
|
|
#endif /* !ASTERISK_SMDI_H */
|
|
|
|
|