3fd1a8dab43a252fcf43b0c9e866cfa80ef66056
[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    
72 } OOStackCmdID;
73
74 /**
75  * This structure is used to queue a stack command for processing in 
76  * the event handler loop.
77  */
78 typedef struct OOStackCommand {
79    OOStackCmdID type;
80    void* param1;
81    int plen1;
82    void* param2;
83    int plen2;
84    void* param3;
85    int plen3;
86 } OOStackCommand;
87
88 #define ooCommand OOStackCommand;
89
90 /**
91  * This function is used by an application to place a call.
92  * @param dest        Call Destination - IP:port / alias
93  * @param callToken   Pointer to a buffer in which callToken will be returned
94  * @param bufsiz      Size of the callToken buffer passed.
95  * @param opts        These are call specific options and if passed a non-null
96  *                    value, will override global endpoint options.
97  *
98  * @return            Returns OOStkCmdStat value indication success or failure.
99  */
100 EXTERN OOStkCmdStat ooMakeCall 
101    (const char* dest, char *callToken, size_t bufsiz, ooCallOptions *opts);
102
103
104
105 /**
106  * This function is used to send a manual ringback message (alerting message)
107  * for a call. Effective only when manual-ringback is enabled.
108  * @param callToken    Unique token for the call.
109  * 
110  * @return            Returns OOStkCmdStat value indication success or failure.
111  */
112 EXTERN OOStkCmdStat ooManualRingback(const char *callToken);
113 EXTERN OOStkCmdStat ooManualProgress(const char *callToken);
114
115 /**
116  * This function is used to answer a call
117  * @param callToken   Unique token for the call
118  * 
119  * @return            Returns OOStkCmdStat value indication success or failure.
120  */
121 EXTERN OOStkCmdStat ooAnswerCall(const char *callToken);
122
123 /**
124  * This function is used to forward an existing call to third party.
125  * @param callToken   Unique token for the call.
126  * @param dest        Address to which the call has to be forwarded. Can be
127  *                    IP:PORT or alias.
128  *
129  * @return            Returns OOStkCmdStat value indication success or failure.
130  */
131 EXTERN OOStkCmdStat ooForwardCall(const char* callToken, char *dest);
132
133 /**
134  * This function is used by an user application to terminate a call.
135  * @param callToken   The uinque token for the call.
136  * @param reason      Reason for hanging call.
137  *
138  * @return            Returns OOStkCmdStat value indication success or failure.
139  */
140 EXTERN OOStkCmdStat ooHangCall(const char* callToken, OOCallClearReason reason, int q931cause);
141
142 /**
143  * This command function can be used by an user application to send a DTMF 
144  * sequence using H.245 UserInputIndication message.
145  * @param callToken  Unique token for the call
146  * @param alpha      Alphanumeric string reperesenting dtmf sequence
147  *
148  * @return            Returns OOStkCmdStat value indication success or failure.
149  */
150 EXTERN OOStkCmdStat ooSendDTMFDigit(const char *callToken, const char* alpha);
151
152
153 /**
154  * This function is used by the user application to stop stack thread.
155  *
156  * @return            Returns OOStkCmdStat value indication success or failure.
157  */
158 EXTERN OOStkCmdStat ooStopMonitor(void);
159
160
161 /**
162  * This function is used by application to obtain the text description for
163  * failure of tsack command.
164  * @param stat       Status code returned by stack command api.
165  *
166  * @return           Text description corresponding to the code.
167  */
168 EXTERN const char* ooGetStkCmdStatusCodeTxt(OOStkCmdStat stat);
169 /** 
170  * @} 
171  */
172
173 EXTERN OOStkCmdStat ooRequestChangeMode(const char *callToken, int isT38Mode);
174
175 EXTERN OOStkCmdStat ooRunCall(const char* dest, char* callToken, size_t bufsiz, ooCallOptions *opts);
176
177 int ooGenerateOutgoingCallToken (char *callToken, size_t size);
178
179 #ifdef __cplusplus
180 }
181 #endif
182
183 #endif