b1e27c981c362bfd6d457a0ecac43935afea541e
[asterisk/asterisk.git] / include / asterisk / event_defs.h
1 /*
2  * Asterisk -- An open source telephony toolkit.
3  *
4  * Copyright (C) 2007, Digium, Inc.
5  *
6  * Russell Bryant <russell@digium.com>
7  *
8  * See http://www.asterisk.org for more information about
9  * the Asterisk project. Please do not directly contact
10  * any of the maintainers of this project for assistance;
11  * the project provides a web site, mailing lists and IRC
12  * channels for your use.
13  *
14  * This program is free software, distributed under the terms of
15  * the GNU General Public License Version 2. See the LICENSE file
16  * at the top of the source tree.
17  */
18
19 /*!
20  * \file
21  * \author Russell Bryant <russell@digium.com>
22  * \brief Generic event system
23  */
24
25 #ifndef AST_EVENT_DEFS_H
26 #define AST_EVENT_DEFS_H
27
28 /*! \brief Event types
29  * \note These values can *never* change. */
30 enum ast_event_type {
31         /*! Reserved to provide the ability to subscribe to all events.  A specific
32             event should never have a payload of 0. */
33         AST_EVENT_ALL    = 0x00,
34         /*! This event type is reserved for use by third-party modules to create
35             custom events without having to modify this file. 
36             \note There are no "custom" IE types, because IEs only have to be
37             unique to the event itself, not necessarily across all events. */
38         AST_EVENT_CUSTOM = 0x01,
39         /*! Voicemail message waiting indication */
40         AST_EVENT_MWI    = 0x02,
41         /*! Someone has subscribed to events */
42         AST_EVENT_SUB    = 0x03,
43         /*! Someone has unsubscribed from events */
44         AST_EVENT_UNSUB  = 0x04,
45         /*! Number of event types.  This should be the last event type + 1 */
46         AST_EVENT_TOTAL  = 0x05,
47 };
48
49 /*! \brief Event Information Element types */
50 enum ast_event_ie_type {
51         /*! Used to terminate the arguments to event functions */
52         AST_EVENT_IE_END       = -1,
53
54         /*! 
55          * \brief Number of new messages
56          * Used by: AST_EVENT_MWI 
57          * Payload type: UINT
58          */
59         AST_EVENT_IE_NEWMSGS   = 0x01,
60         /*! 
61          * \brief Number of
62          * Used by: AST_EVENT_MWI 
63          * Payload type: UINT
64          */
65         AST_EVENT_IE_OLDMSGS   = 0x02,
66         /*! 
67          * \brief Mailbox name \verbatim (mailbox[@context]) \endverbatim
68          * Used by: AST_EVENT_MWI 
69          * Payload type: STR
70          */
71         AST_EVENT_IE_MAILBOX   = 0x03,
72         /*! 
73          * \brief Unique ID
74          * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
75          * Payload type: UINT
76          */
77         AST_EVENT_IE_UNIQUEID  = 0x04,
78         /*! 
79          * \brief Event type 
80          * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
81          * Payload type: UINT
82          */
83         AST_EVENT_IE_EVENTTYPE = 0x05,
84         /*!
85          * \brief Hint that someone cares than an IE exists
86          * Used by: AST_EVENT_SUB
87          * Payload type: UINT (ast_event_ie_type)
88          */
89         AST_EVENT_IE_EXISTS    = 0x06,
90 };
91
92 /*!
93  * \brief Payload types for event information elements
94  */
95 enum ast_event_ie_pltype {
96         /*! Just check if it exists, not the value */
97         AST_EVENT_IE_PLTYPE_EXISTS,
98         /*! Unsigned Integer (Can be used for signed, too ...) */
99         AST_EVENT_IE_PLTYPE_UINT,
100         /*! String */
101         AST_EVENT_IE_PLTYPE_STR,
102 };
103
104 /*!
105  * \brief Results for checking for subscribers
106  *
107  * \ref ast_event_check_subscriber()
108  */
109 enum ast_event_subscriber_res {
110         /*! No subscribers exist */
111         AST_EVENT_SUB_NONE,
112         /*! At least one subscriber exists */
113         AST_EVENT_SUB_EXISTS,
114 };
115
116 struct ast_event;
117 struct ast_event_ie;
118 struct ast_event_sub;
119
120 #endif /* AST_EVENT_DEFS_H */