AST_CONTROL_CONNECTED_LINE frame type processing added to setup DisplayIE field
[asterisk/asterisk.git] / addons / ooh323c / src / ooStackCmds.h
1 /*
2  * Copyright (C) 2004-2005 by Objective Systems, Inc.
3  *
4  * This software is furnished under an open source license and may be 
5  * used and copied only in accordance with the terms of this license. 
6  * The text of the license may generally be found in the root 
7  * directory of this installation in the COPYING file.  It 
8  * can also be viewed online at the following URL:
9  *
10  *   http://www.obj-sys.com/open/license.html
11  *
12  * Any redistributions of this file including modified versions must 
13  * maintain this copyright notice.
14  *
15  *****************************************************************************/
16 /**
17  * @file ooStackCmds.h 
18  * This file contains stack commands which an user application can use to make
19  * call, hang call etc. 
20  */
21
22 #ifndef OO_STACKCMDS_H
23 #define OO_STACKCMDS_H
24
25 #include "ootypes.h"
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30
31 #ifndef EXTERN
32 #if defined (MAKE_DLL)
33 #define EXTERN __declspec(dllexport)
34 #else
35 #define EXTERN
36 #endif /* MAKE_DLL */
37 #endif /* EXTERN */
38
39
40
41 /** 
42  * @defgroup stackcmds Stack Control Commands
43  * @{
44  */
45
46 /**
47  * This is an enumeration of Stack Command return codes.
48  */
49 typedef enum OOStkCmdStat{
50   OO_STKCMD_SUCCESS,
51   OO_STKCMD_MEMERR,
52   OO_STKCMD_INVALIDPARAM,
53   OO_STKCMD_WRITEERR,
54   OO_STKCMD_CONNECTIONERR
55 }OOStkCmdStat;
56
57 /**
58  * This is an enumeration of stack command codes.
59  */
60 typedef enum OOStackCmdID {
61    OO_CMD_NOOP,
62    OO_CMD_MAKECALL,          /*!< Make call */
63    OO_CMD_ANSCALL,           /*!< Answer call */
64    OO_CMD_FWDCALL,           /*!< Forward call */
65    OO_CMD_HANGCALL,          /*!< Terminate call */
66    OO_CMD_SENDDIGIT,         /*!< Send dtmf */
67    OO_CMD_MANUALRINGBACK,    /*!< Send Alerting - ringback */
68    OO_CMD_MANUALPROGRESS,    /*!< Send progress */
69    OO_CMD_STOPMONITOR,       /*!< Stop the event monitor */
70    OO_CMD_REQMODE,           /*!< Request new mode */
71    OO_CMD_SETANI             /*! <Set conncted info */
72    
73 } OOStackCmdID;
74
75 /**
76  * This structure is used to queue a stack command for processing in 
77  * the event handler loop.
78  */
79 typedef struct OOStackCommand {
80    OOStackCmdID type;
81    void* param1;
82    int plen1;
83    void* param2;
84    int plen2;
85    void* param3;
86    int plen3;
87 } OOStackCommand;
88
89 #define ooCommand OOStackCommand;
90
91 /**
92  * This function is used by an application to place a call.
93  * @param dest        Call Destination - IP:port / alias
94  * @param callToken   Pointer to a buffer in which callToken will be returned
95  * @param bufsiz      Size of the callToken buffer passed.
96  * @param opts        These are call specific options and if passed a non-null
97  *                    value, will override global endpoint options.
98  *
99  * @return            Returns OOStkCmdStat value indication success or failure.
100  */
101 EXTERN OOStkCmdStat ooMakeCall 
102    (const char* dest, char *callToken, size_t bufsiz, ooCallOptions *opts);
103
104
105
106 /**
107  * This function is used to send a manual ringback message (alerting message)
108  * for a call. Effective only when manual-ringback is enabled.
109  * @param callToken    Unique token for the call.
110  * 
111  * @return            Returns OOStkCmdStat value indication success or failure.
112  */
113 EXTERN OOStkCmdStat ooManualRingback(const char *callToken);
114 EXTERN OOStkCmdStat ooManualProgress(const char *callToken);
115
116 /**
117  * This function is used to answer a call
118  * @param callToken   Unique token for the call
119  * 
120  * @return            Returns OOStkCmdStat value indication success or failure.
121  */
122 EXTERN OOStkCmdStat ooAnswerCall(const char *callToken);
123
124 /**
125  * This function is used to forward an existing call to third party.
126  * @param callToken   Unique token for the call.
127  * @param dest        Address to which the call has to be forwarded. Can be
128  *                    IP:PORT or alias.
129  *
130  * @return            Returns OOStkCmdStat value indication success or failure.
131  */
132 EXTERN OOStkCmdStat ooForwardCall(const char* callToken, char *dest);
133
134 /**
135  * This function is used by an user application to terminate a call.
136  * @param callToken   The uinque token for the call.
137  * @param reason      Reason for hanging call.
138  *
139  * @return            Returns OOStkCmdStat value indication success or failure.
140  */
141 EXTERN OOStkCmdStat ooHangCall(const char* callToken, OOCallClearReason reason, int q931cause);
142
143 /**
144  * This command function can be used by an user application to send a DTMF 
145  * sequence using H.245 UserInputIndication message.
146  * @param callToken  Unique token for the call
147  * @param alpha      Alphanumeric string reperesenting dtmf sequence
148  *
149  * @return            Returns OOStkCmdStat value indication success or failure.
150  */
151 EXTERN OOStkCmdStat ooSendDTMFDigit(const char *callToken, const char* alpha);
152
153
154 /**
155  * This function is used by the user application to stop stack thread.
156  *
157  * @return            Returns OOStkCmdStat value indication success or failure.
158  */
159 EXTERN OOStkCmdStat ooStopMonitor(void);
160
161
162 /**
163  * This function is used by application to obtain the text description for
164  * failure of tsack command.
165  * @param stat       Status code returned by stack command api.
166  *
167  * @return           Text description corresponding to the code.
168  */
169 EXTERN const char* ooGetStkCmdStatusCodeTxt(OOStkCmdStat stat);
170 /** 
171  * @} 
172  */
173
174 EXTERN OOStkCmdStat ooRequestChangeMode(const char *callToken, int isT38Mode);
175
176 EXTERN OOStkCmdStat ooRunCall(const char* dest, char* callToken, size_t bufsiz, ooCallOptions *opts);
177
178 int ooGenerateOutgoingCallToken (char *callToken, size_t size);
179
180 EXTERN OOStkCmdStat ooSetANI(const char *callToken, const char* ani);
181
182 #ifdef __cplusplus
183 }
184 #endif
185
186 #endif