aboutsummaryrefslogtreecommitdiffstats
path: root/channels/sig_pri.h
diff options
context:
space:
mode:
authorrmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-03 00:02:14 +0000
committerrmudgett <rmudgett@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-03 00:02:14 +0000
commit9c2db6ff405bec6bb748cdfbdb9e5c23d7602250 (patch)
tree21fdc21064f0d496b580fcb887b52f5bd9d19706 /channels/sig_pri.h
parent81798282f23fba2ff59d22774022543ebceb0f00 (diff)
Add ETSI Message Waiting Indication (MWI) support.
Add the ability to report waiting messages to ISDN endpoints (phones). Relevant specification: EN 300 650 and EN 300 745 Review: https://reviewboard.asterisk.org/r/599/ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@267399 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/sig_pri.h')
-rw-r--r--channels/sig_pri.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/channels/sig_pri.h b/channels/sig_pri.h
index 450a36eec..e7f424f5f 100644
--- a/channels/sig_pri.h
+++ b/channels/sig_pri.h
@@ -27,6 +27,7 @@
#include "asterisk/channel.h"
#include "asterisk/frame.h"
+#include "asterisk/event.h"
#include "asterisk/ccss.h"
#include <libpri.h>
#include <dahdi/user.h>
@@ -251,6 +252,35 @@ struct sig_pri_chan {
#endif
};
+#if defined(HAVE_PRI_MWI)
+/*! Maximum number of mailboxes per span. */
+#define SIG_PRI_MAX_MWI_MAILBOXES 8
+/*! Typical maximum length of mwi mailbox number */
+#define SIG_PRI_MAX_MWI_MBOX_NUMBER_LEN 10 /* digits in number */
+/*! Typical maximum length of mwi mailbox context */
+#define SIG_PRI_MAX_MWI_CONTEXT_LEN 10
+/*!
+ * \brief Maximum mwi_mailbox string length.
+ * \details
+ * max_length = #mailboxes * (mbox_number + '@' + context + ',')
+ * The last ',' is a null terminator instead.
+ */
+#define SIG_PRI_MAX_MWI_MAILBOX_STR (SIG_PRI_MAX_MWI_MAILBOXES \
+ * (SIG_PRI_MAX_MWI_MBOX_NUMBER_LEN + 1 + SIG_PRI_MAX_MWI_CONTEXT_LEN + 1))
+
+struct sig_pri_mbox {
+ /*!
+ * \brief MWI mailbox event subscription.
+ * \note NULL if mailbox not configured.
+ */
+ struct ast_event_sub *sub;
+ /*! \brief Mailbox number */
+ const char *number;
+ /*! \brief Mailbox context. */
+ const char *context;
+};
+#endif /* defined(HAVE_PRI_MWI) */
+
struct sig_pri_pri {
/* Should be set by user */
struct ast_cc_config_params *cc_params; /*!< CC config parameters for each new call. */
@@ -294,6 +324,17 @@ struct sig_pri_pri {
char privateprefix[20]; /*!< for private dialplans */
char unknownprefix[20]; /*!< for unknown dialplans */
long resetinterval; /*!< Interval (in seconds) for resetting unused channels */
+#if defined(HAVE_PRI_MWI)
+ /*! \brief Active MWI mailboxes */
+ struct sig_pri_mbox mbox[SIG_PRI_MAX_MWI_MAILBOXES];
+ /*!
+ * \brief Comma separated list of mailboxes to indicate MWI.
+ * \note Empty if disabled.
+ * \note Format: mailbox_number[@context]{,mailbox_number[@context]}
+ * \note String is split apart when span is started.
+ */
+ char mwi_mailboxes[SIG_PRI_MAX_MWI_MAILBOX_STR];
+#endif /* defined(HAVE_PRI_MWI) */
char msn_list[AST_MAX_EXTENSION]; /*!< Comma separated list of MSNs to handle. Empty if disabled. */
char idleext[AST_MAX_EXTENSION]; /*!< Where to idle extra calls */
char idlecontext[AST_MAX_CONTEXT]; /*!< What context to use for idle */
@@ -412,6 +453,7 @@ void sig_pri_init_pri(struct sig_pri_pri *pri);
* functions should handle it normally (generate inband DTMF) */
int sig_pri_digit_begin(struct sig_pri_chan *pvt, struct ast_channel *ast, char digit);
+void sig_pri_stop_pri(struct sig_pri_pri *pri);
int sig_pri_start_pri(struct sig_pri_pri *pri);
void sig_pri_chan_alarm_notify(struct sig_pri_chan *p, int noalarm);