Merge major changes to the way device state is passed around Asterisk. The two
[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         /*! The state of a device has changed */
46         AST_EVENT_DEVICE_STATE = 0x05,
47         /*! Number of event types.  This should be the last event type + 1 */
48         AST_EVENT_TOTAL        = 0x06,
49 };
50
51 /*! \brief Event Information Element types */
52 enum ast_event_ie_type {
53         /*! Used to terminate the arguments to event functions */
54         AST_EVENT_IE_END       = -1,
55
56         /*! 
57          * \brief Number of new messages
58          * Used by: AST_EVENT_MWI 
59          * Payload type: UINT
60          */
61         AST_EVENT_IE_NEWMSGS   = 0x01,
62         /*! 
63          * \brief Number of
64          * Used by: AST_EVENT_MWI 
65          * Payload type: UINT
66          */
67         AST_EVENT_IE_OLDMSGS   = 0x02,
68         /*! 
69          * \brief Mailbox name \verbatim (mailbox[@context]) \endverbatim
70          * Used by: AST_EVENT_MWI 
71          * Payload type: STR
72          */
73         AST_EVENT_IE_MAILBOX   = 0x03,
74         /*! 
75          * \brief Unique ID
76          * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
77          * Payload type: UINT
78          */
79         AST_EVENT_IE_UNIQUEID  = 0x04,
80         /*! 
81          * \brief Event type 
82          * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB
83          * Payload type: UINT
84          */
85         AST_EVENT_IE_EVENTTYPE = 0x05,
86         /*!
87          * \brief Hint that someone cares that an IE exists
88          * Used by: AST_EVENT_SUB
89          * Payload type: UINT (ast_event_ie_type)
90          */
91         AST_EVENT_IE_EXISTS    = 0x06,
92         /*!
93          * \brief Device Name
94          * Used by AST_EVENT_DEVICE_STATE
95          * Payload type: STR
96          */
97         AST_EVENT_IE_DEVICE    = 0x07,
98         /*!
99          * \brief Generic State IE
100          * Used by AST_EVENT_DEVICE_STATE
101          * Payload type: UINT
102          * The actual state values depend on the event which
103          * this IE is a part of.
104          */
105          AST_EVENT_IE_STATE    = 0x08,
106 };
107
108 /*!
109  * \brief Payload types for event information elements
110  */
111 enum ast_event_ie_pltype {
112         /*! Just check if it exists, not the value */
113         AST_EVENT_IE_PLTYPE_EXISTS,
114         /*! Unsigned Integer (Can be used for signed, too ...) */
115         AST_EVENT_IE_PLTYPE_UINT,
116         /*! String */
117         AST_EVENT_IE_PLTYPE_STR,
118 };
119
120 /*!
121  * \brief Results for checking for subscribers
122  *
123  * \ref ast_event_check_subscriber()
124  */
125 enum ast_event_subscriber_res {
126         /*! No subscribers exist */
127         AST_EVENT_SUB_NONE,
128         /*! At least one subscriber exists */
129         AST_EVENT_SUB_EXISTS,
130 };
131
132 struct ast_event;
133 struct ast_event_ie;
134 struct ast_event_sub;
135
136 #endif /* AST_EVENT_DEFS_H */