00001 /* 00002 * Asterisk -- An open source telephony toolkit. 00003 * 00004 * Copyright (C) 2007, Digium, Inc. 00005 * 00006 * Russell Bryant <russell@digium.com> 00007 * 00008 * See http://www.asterisk.org for more information about 00009 * the Asterisk project. Please do not directly contact 00010 * any of the maintainers of this project for assistance; 00011 * the project provides a web site, mailing lists and IRC 00012 * channels for your use. 00013 * 00014 * This program is free software, distributed under the terms of 00015 * the GNU General Public License Version 2. See the LICENSE file 00016 * at the top of the source tree. 00017 */ 00018 00019 /*! 00020 * \file 00021 * \author Russell Bryant <russell@digium.com> 00022 * \brief Generic event system 00023 */ 00024 00025 #ifndef AST_EVENT_DEFS_H 00026 #define AST_EVENT_DEFS_H 00027 00028 /*! \brief Event types 00029 * \note These values can *never* change. */ 00030 enum ast_event_type { 00031 /*! Reserved to provide the ability to subscribe to all events. A specific 00032 event should never have a payload of 0. */ 00033 AST_EVENT_ALL = 0x00, 00034 /*! This event type is reserved for use by third-party modules to create 00035 custom events without having to modify this file. 00036 \note There are no "custom" IE types, because IEs only have to be 00037 unique to the event itself, not necessarily across all events. */ 00038 AST_EVENT_CUSTOM = 0x01, 00039 /*! Voicemail message waiting indication */ 00040 AST_EVENT_MWI = 0x02, 00041 /*! Someone has subscribed to events */ 00042 AST_EVENT_SUB = 0x03, 00043 /*! Someone has unsubscribed from events */ 00044 AST_EVENT_UNSUB = 0x04, 00045 /*! The state of a device has changed */ 00046 AST_EVENT_DEVICE_STATE = 0x05, 00047 /*! Number of event types. This should be the last event type + 1 */ 00048 AST_EVENT_TOTAL = 0x06, 00049 }; 00050 00051 /*! \brief Event Information Element types */ 00052 enum ast_event_ie_type { 00053 /*! Used to terminate the arguments to event functions */ 00054 AST_EVENT_IE_END = -1, 00055 00056 /*! 00057 * \brief Number of new messages 00058 * Used by: AST_EVENT_MWI 00059 * Payload type: UINT 00060 */ 00061 AST_EVENT_IE_NEWMSGS = 0x01, 00062 /*! 00063 * \brief Number of 00064 * Used by: AST_EVENT_MWI 00065 * Payload type: UINT 00066 */ 00067 AST_EVENT_IE_OLDMSGS = 0x02, 00068 /*! 00069 * \brief Mailbox name \verbatim (mailbox[@context]) \endverbatim 00070 * Used by: AST_EVENT_MWI 00071 * Payload type: STR 00072 */ 00073 AST_EVENT_IE_MAILBOX = 0x03, 00074 /*! 00075 * \brief Unique ID 00076 * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB 00077 * Payload type: UINT 00078 */ 00079 AST_EVENT_IE_UNIQUEID = 0x04, 00080 /*! 00081 * \brief Event type 00082 * Used by: AST_EVENT_SUB, AST_EVENT_UNSUB 00083 * Payload type: UINT 00084 */ 00085 AST_EVENT_IE_EVENTTYPE = 0x05, 00086 /*! 00087 * \brief Hint that someone cares that an IE exists 00088 * Used by: AST_EVENT_SUB 00089 * Payload type: UINT (ast_event_ie_type) 00090 */ 00091 AST_EVENT_IE_EXISTS = 0x06, 00092 /*! 00093 * \brief Device Name 00094 * Used by AST_EVENT_DEVICE_STATE 00095 * Payload type: STR 00096 */ 00097 AST_EVENT_IE_DEVICE = 0x07, 00098 /*! 00099 * \brief Generic State IE 00100 * Used by AST_EVENT_DEVICE_STATE 00101 * Payload type: UINT 00102 * The actual state values depend on the event which 00103 * this IE is a part of. 00104 */ 00105 AST_EVENT_IE_STATE = 0x08, 00106 /*! 00107 * \brief Context IE 00108 * Used by AST_EVENT_MWI 00109 * Payload type: str 00110 */ 00111 AST_EVENT_IE_CONTEXT = 0x09, 00112 }; 00113 00114 /*! 00115 * \brief Payload types for event information elements 00116 */ 00117 enum ast_event_ie_pltype { 00118 /*! Just check if it exists, not the value */ 00119 AST_EVENT_IE_PLTYPE_EXISTS, 00120 /*! Unsigned Integer (Can be used for signed, too ...) */ 00121 AST_EVENT_IE_PLTYPE_UINT, 00122 /*! String */ 00123 AST_EVENT_IE_PLTYPE_STR, 00124 }; 00125 00126 /*! 00127 * \brief Results for checking for subscribers 00128 * 00129 * \ref ast_event_check_subscriber() 00130 */ 00131 enum ast_event_subscriber_res { 00132 /*! No subscribers exist */ 00133 AST_EVENT_SUB_NONE, 00134 /*! At least one subscriber exists */ 00135 AST_EVENT_SUB_EXISTS, 00136 }; 00137 00138 struct ast_event; 00139 struct ast_event_ie; 00140 struct ast_event_sub; 00141 struct ast_event_iterator; 00142 00143 #endif /* AST_EVENT_DEFS_H */