diff options
Diffstat (limited to 'addons/ooh323c/src/ooCalls.h')
-rw-r--r-- | addons/ooh323c/src/ooCalls.h | 822 |
1 files changed, 822 insertions, 0 deletions
diff --git a/addons/ooh323c/src/ooCalls.h b/addons/ooh323c/src/ooCalls.h new file mode 100644 index 000000000..64d62d6e1 --- /dev/null +++ b/addons/ooh323c/src/ooCalls.h @@ -0,0 +1,822 @@ +/* + * Copyright (C) 2004-2005 by Objective Systems, Inc. + * + * This software is furnished under an open source license and may be + * used and copied only in accordance with the terms of this license. + * The text of the license may generally be found in the root + * directory of this installation in the COPYING file. It + * can also be viewed online at the following URL: + * + * http://www.obj-sys.com/open/license.html + * + * Any redistributions of this file including modified versions must + * maintain this copyright notice. + * + *****************************************************************************/ +/** + * @file ooCalls.h + * This file contains call management functions. + */ +#ifndef _OOCALLS_H_ +#define _OOCALLS_H_ + +#include "ooLogChan.h" +#include "ooCapability.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * @defgroup callmgmt Call Management + * @{ + */ +/* Flag mask values */ +/* DISABLEGK is used to selectively disable gatekeeper use. For incoming calls + DISABLEGK can be set in onReceivedSetup callback by application. + Very useful in pbx applications where gk is used only when call is + to or from outside pbx domian. For outgoing calls, ooMakeCallNoGk + disables use of gk for specific call. +*/ + + +#define OO_M_ENDSESSION_BUILT ASN1UINTCNT(0x00800000) +#define OO_M_RELEASE_BUILT ASN1UINTCNT(0x00400000) +#define OO_M_FASTSTARTANSWERED ASN1UINTCNT(0x04000000) + +#define OO_M_ENDPOINTCREATED ASN1UINTCNT(0x00010000) +#define OO_M_GKROUTED ASN1UINTCNT(0x00200000) +#define OO_M_AUTOANSWER ASN1UINTCNT(0x00100000) +#define OO_M_TUNNELING ASN1UINTCNT(0x08000000) +#define OO_M_MEDIAWAITFORCONN ASN1UINTCNT(0x20000000) +#define OO_M_FASTSTART ASN1UINTCNT(0x02000000) +#define OO_M_DISABLEGK ASN1UINTCNT(0x01000000) +#define OO_M_MANUALRINGBACK ASN1UINTCNT(0x10000000) + + +/** + * Call states. + */ +typedef enum { + OO_CALL_CREATED, /*!< Call created. */ + OO_CALL_WAITING_ADMISSION, /*!< Call waiting for admission by GK */ + OO_CALL_CONNECTING, /*!< Call in process of connecting */ + OO_CALL_CONNECTED, /*!< Call currently connected. */ + OO_CALL_PAUSED, /*!< Call Paused for hold/transfer. */ + OO_CALL_CLEAR, /*!< Call marked for clearing */ + OO_CALL_CLEAR_RELEASERECVD, /*!< Release command received. */ + OO_CALL_CLEAR_RELEASESENT, /*!< Release sent */ + OO_CALL_CLEARED /*!< Call cleared */ +} OOCallState; + +/** + * H.245 session states. + */ +typedef enum { + OO_H245SESSION_IDLE, + OO_H245SESSION_PAUSED, + OO_H245SESSION_ACTIVE, + OO_H245SESSION_ENDSENT, + OO_H245SESSION_ENDRECVD, + OO_H245SESSION_CLOSED +} OOH245SessionState; + +/** + * Structure to store local and remote media endpoint info for a + * given media type. + */ +typedef struct OOMediaInfo{ + char dir[15]; /* transmit/receive*/ + int cap; + int lMediaPort; + int lMediaCntrlPort; + char lMediaIP[20]; + struct OOMediaInfo *next; +} OOMediaInfo; + +#define ooMediaInfo OOMediaInfo + +struct OOAliases; + +/** + * Structure to hold information on a forwarded call. + */ +typedef struct OOCallFwdData { + char ip[20]; + int port; + struct OOAliases *aliases; + OOBOOL fwdedByRemote; /*Set when we are being fwded by remote*/ +} OOCallFwdData; + +/** + * Structure to store information on an H.323 channel (H.225 or H.245) for + * a particular call. + */ +typedef struct OOH323Channel { + OOSOCKET sock; /*!< Socket connection for the channel */ + int port; /*!< Port assigned to the channel */ + DList outQueue; /*!< Output message queue */ +} OOH323Channel; + +/** + * Structure to store information on fast start response (H.225) to + * reply same answer in CALL PROCEEDING, ALERTING & CONNECT. + */ +typedef struct EXTERN FastStartResponse { + ASN1UINT n; + ASN1DynOctStr *elem; +} FastStartResponse; + + +/** + * This structure is used to maintain all information on an active call. + * A list of these structures is maintained within the global endpoint + * structure. + */ +typedef struct OOH323CallData { + OOCTXT *pctxt; + char callToken[20]; /* ex: ooh323c_call_1 */ + char callType[10]; /* incoming/outgoing */ + OOCallMode callMode; + ASN1USINT callReference; + char ourCallerId[256]; + H225CallIdentifier callIdentifier;/* The call identifier for the active + call. */ + char *callingPartyNumber; + char *calledPartyNumber; + H225ConferenceIdentifier confIdentifier; + ASN1UINT flags; + OOCallState callState; + OOCallClearReason callEndReason; + unsigned h245ConnectionAttempts; + OOH245SessionState h245SessionState; + int dtmfmode; + OOMediaInfo *mediaInfo; + OOCallFwdData *pCallFwdData; + char localIP[20];/* Local IP address */ + OOH323Channel* pH225Channel; + OOH323Channel* pH245Channel; + OOSOCKET *h245listener; + int *h245listenport; + char remoteIP[20];/* Remote IP address */ + int remotePort; + int remoteH245Port; + char *remoteDisplayName; + struct OOAliases *remoteAliases; + struct OOAliases *ourAliases; /*aliases used in the call for us */ + OOMasterSlaveState masterSlaveState; /*!< Master-Slave state */ + ASN1UINT statusDeterminationNumber; + OOCapExchangeState localTermCapState; + OOCapExchangeState remoteTermCapState; + struct ooH323EpCapability* ourCaps; + struct ooH323EpCapability* remoteCaps; /* TODO: once we start using jointCaps, get rid of remoteCaps*/ + struct ooH323EpCapability* jointCaps; + int jointDtmfMode; + DList remoteFastStartOLCs; + ASN1UINT8 remoteTermCapSeqNo; + ASN1UINT8 localTermCapSeqNo; + OOCapPrefs capPrefs; + OOLogicalChannel* logicalChans; + int noOfLogicalChannels; + int logicalChanNoBase; + int logicalChanNoMax; + int logicalChanNoCur; + unsigned nextSessionID; /* Note by default 1 is audio session, 2 is video and 3 is data, from 3 onwards master decides*/ + DList timerList; + ASN1UINT msdRetries; + FastStartResponse *pFastStartRes; /* fast start response */ + void *usrData; /*!<User can set this to user specific data*/ + struct OOH323CallData* next; + struct OOH323CallData* prev; +} OOH323CallData; + +#define ooCallData OOH323CallData + +/** + * This callback function is triggered when a new call structure is + * created inside the stack for an incoming or outgoing call. + * + * @param call H.323 call data structure + * @return 0 if callback was successful, non-zero error code if failure. + */ +typedef int (*cb_OnNewCallCreated)(OOH323CallData* call); + +/** + * This callback function is triggered when a Q.931 alerting message is + * received for an outgoing call or when a Q.931 alerting message is sent + * for an incoming call. + * + * @param call H.323 call data structure + * @return 0 if callback was successful, non-zero error code if failure. + */ +typedef int (*cb_OnAlerting)(OOH323CallData * call); + +/** + * This callback function is triggered when there is an incoming call. + * In the case where a gatekeeper is in use, the call must first be + * admitted by the gatekeeper before this callback is triggered. + * + * @param call H.323 call data structure + * @return 0 if callback was successful, non-zero error code if failure. + */ +typedef int (*cb_OnIncomingCall)(OOH323CallData* call ); + +/** + * This callback function is triggered after a Q.931 setup message + * is sent for an outgoing call. + * + * @param call H.323 call data structure + * @return 0 if callback was successful, non-zero error code if failure. + */ +typedef int (*cb_OnOutgoingCall)(OOH323CallData* call ); + +/** + * This callback function is triggered when a Q.931 connect message is + * sent in case of incoming call. In case of outgoing call, this is invoked + * when a Q.931 connect message is received. It is not invoked until after + * fast start and H.245 tunneling messages within the connect message are + * processed. + * + * @param call H.323 call data structure + * @return 0 if callback was successful, non-zero error code if failure. + */ +typedef int (*cb_OnCallEstablished)(struct OOH323CallData* call); + +/** + * This callback function is triggered when a call is cleared. + * + * @param call H.323 call data structure + * @return 0 if callback was successful, non-zero error code if failure. + */ +typedef int (*cb_OnCallCleared)(struct OOH323CallData* call); + +/** + * This callback function is triggered when master-slave determination + * and capabilities negotiation procedures are successfully completed + * for a call. + * + * @param call H.323 call data structure + * @return 0 if callback was successful, non-zero error code if failure. + */ +typedef int (*cb_OpenLogicalChannels)(struct OOH323CallData* call); + +/** + * This callback function is triggered when a call is forwarded by + * a remote endpoint to another remote destination. + * @param call Associated H.323 call data structure + * @return 0 if callback was successful, non-zero error code if failure + */ +typedef int (*cb_OnCallForwarded)(struct OOH323CallData* call); + +/** + * This callback function is triggered when dtmf is received over Q.931(keypad) + * or H.245(alphanumeric) or H.245(signal). This is not triggered when rfc + * 2833 based dtmf is received. + */ +typedef int (*cb_OnReceivedDTMF) + (struct OOH323CallData *call, const char *dtmf); + +/** + * This structure holds all of the H.323 signaling callback function + * addresses. + * @see ooH323EpSetH323Callbacks + */ +typedef struct OOH323CALLBACKS { + cb_OnAlerting onNewCallCreated; + cb_OnAlerting onAlerting; + cb_OnIncomingCall onIncomingCall; + cb_OnOutgoingCall onOutgoingCall; + cb_OnCallEstablished onCallEstablished; + cb_OnCallForwarded onCallForwarded; + cb_OnCallCleared onCallCleared; + cb_OpenLogicalChannels openLogicalChannels; + cb_OnReceivedDTMF onReceivedDTMF; +} OOH323CALLBACKS; + +/** + * This function is used to create a new call entry. + * @param type Type of the call (incoming/outgoing) + * @param callToken Call Token, an uniques identifier for the call + * + * @return Pointer to a newly created call + */ +EXTERN OOH323CallData* ooCreateCall(char *type, char *callToken); + +/** + * This function is used to add a call to the list of existing calls. + * @param call Pointer to the call to be added. + * @return OO_OK, on success. OO_FAILED, on failure + */ +EXTERN int ooAddCallToList (OOH323CallData *call); + +/** + * This function is used to set the caller ID for a call. + * + * @param call Handle to the call + * @param callerid caller ID value + * @return OO_OK, on success. OO_FAILED, otherwise. + */ +EXTERN int ooCallSetCallerId +(OOH323CallData* call, const char* callerid); + +/** + * This function is used to set calling party number for a particular call. + * @param call Handle to the call. + * @param number Calling Party number value. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallSetCallingPartyNumber +(OOH323CallData *call, const char *number); + +/** + * This function is used to retrieve calling party number of a particular call. + * @param call Handle to the call. + * @param buffer Handle to the buffer in which value will be returned. + * @param len Length of the supplied buffer. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallGetCallingPartyNumber +(OOH323CallData *call, char *buffer, int len); + +/** + * This function is used to retrieve called party number of a particular call. + * @param call Handle to the call. + * @param buffer Handle to the buffer in which value will be returned. + * @param len Length of the supplied buffer. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallGetCalledPartyNumber +(OOH323CallData *call, char *buffer, int len); + +/** + * This function is used to set called party number for a particular call. + * @param call Handle to the call. + * @param number Called Party number value. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallSetCalledPartyNumber +(OOH323CallData *call, const char *number); + +/** + * This function is used to clear the local aliases used by this call. + * @param call Handle to the call. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallClearAliases(OOH323CallData *call); + +/** + * This function is used to add an H323ID alias to be used by local endpoint + * for a particular call. + * @param call Handle to the call + * @param h323id H323ID to add for the local endpoint for the call. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallAddAliasH323ID(OOH323CallData *call, const char* h323id); + +/** + * This function is used to add an dialedDigits alias to be used by local + * endpoint for a particular call. + * @param call Handle to the call + * @param dialedDigits DialedDigits to add for the local endpoint for call. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallAddAliasDialedDigits + (OOH323CallData *call, const char* dialedDigits); + +/** + * This function is used to add an email-id alias to be used by local + * endpoint for a particular call. + * @param call Handle to the call + * @param email Email-id to add for the local endpoint for call. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallAddAliasEmailID(OOH323CallData *call, const char* email); + + +/** + * This function is used to add an email-id alias to be used by local + * endpoint for a particular call. + * @param call Handle to the call + * @param url URL-id to add for the local endpoint for call. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallAddAliasURLID(OOH323CallData *call, const char* url); + + +/** + * This is a helper function used by other call related add aliases functions + * to add a particular alias. This function is not supposed to be called + * directly. + * @param call Handle to the call + * @param aliasType Type of alias being added + * @param value Alias value + * @param local Whether alias is for local party or remote party + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +int ooCallAddAlias + (OOH323CallData *call, int aliasType, const char *value, OOBOOL local); + + +/** + * This function is used to add an dialed digits alias for the remote endpoint + * involved in a particular call. + * @param call Handle to the call + * @param dialedDigits dialedDigits alias to add for the remote endpoint. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallAddRemoteAliasDialedDigits + (OOH323CallData *call, const char* dialedDigits); + +/** + * This function is used to add an H323ID alias for the remote endpoint + * involved in a particular call. + * @param call Handle to the call + * @param h323id H323ID to add for the remote endpoint. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallAddRemoteAliasH323ID(OOH323CallData *call, const char* h323id); + + +/** + * This function is used to add G7231 capability for the call. The + * "ooCallAdd...Capability" functions allow to override the global endpoint + * capabilities and use specific capabilities for specific calls. + * @param call Call for which capability has to be added. + * @param cap Capability to be added. + * @param txframes Number of frames per packet for transmission. + * @param rxframes Number of frames per packet for reception. + * @param silenceSuppression Indicates support for silenceSuppression. + * @param dir Direction of capability.OORX, OOTX, OORXANDTX + * @param startReceiveChannel Callback function to start receive channel. + * @param startTransmitChannel Callback function to start transmit channel. + * @param stopReceiveChannel Callback function to stop receive channel. + * @param stopTransmitChannel Callback function to stop transmit channel. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallAddG7231Capability(OOH323CallData *call, int cap, int txframes, + int rxframes, OOBOOL silenceSuppression, int dir, + cb_StartReceiveChannel startReceiveChannel, + cb_StartTransmitChannel startTransmitChannel, + cb_StopReceiveChannel stopReceiveChannel, + cb_StopTransmitChannel stopTransmitChannel); + +/** + * This function is used to add G728 capability for the call. The + * "ooCallAdd...Capability" functions allow to override the global endpoint + * capabilities and use specific capabilities for specific calls. + * @param call Call for which capability has to be added. + * @param cap Capability to be added. + * @param txframes Number of frames per packet for transmission. + * @param rxframes Number of frames per packet for reception. + * @param dir Direction of capability.OORX, OOTX, OORXANDTX + * @param startReceiveChannel Callback function to start receive channel. + * @param startTransmitChannel Callback function to start transmit channel. + * @param stopReceiveChannel Callback function to stop receive channel. + * @param stopTransmitChannel Callback function to stop transmit channel. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallAddG728Capability(OOH323CallData *call, int cap, int txframes, + int rxframes, int dir, + cb_StartReceiveChannel startReceiveChannel, + cb_StartTransmitChannel startTransmitChannel, + cb_StopReceiveChannel stopReceiveChannel, + cb_StopTransmitChannel stopTransmitChannel); + +/** + * This function is used to add G729 capability for the call. The + * "ooCallAdd...Capability" functions allow to override the global endpoint + * capabilities and use specific capabilities for specific calls. + * @param call Call for which capability has to be added. + * @param cap Capability to be added. + * @param txframes Number of frames per packet for transmission. + * @param rxframes Number of frames per packet for reception. + * @param dir Direction of capability.OORX, OOTX, OORXANDTX + * @param startReceiveChannel Callback function to start receive channel. + * @param startTransmitChannel Callback function to start transmit channel. + * @param stopReceiveChannel Callback function to stop receive channel. + * @param stopTransmitChannel Callback function to stop transmit channel. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallAddG729Capability(OOH323CallData *call, int cap, int txframes, + int rxframes, int dir, + cb_StartReceiveChannel startReceiveChannel, + cb_StartTransmitChannel startTransmitChannel, + cb_StopReceiveChannel stopReceiveChannel, + cb_StopTransmitChannel stopTransmitChannel); + +/** + * This function is used to add G711 capability for the call. The + * "ooCallAdd...Capability" functions allow to override the global endpoint + * capabilities and use specific capabilities for specific calls. + * @param call Call for which capability has to be added. + * @param cap Capability to be added. + * @param txframes Number of frames per packet for transmission. + * @param rxframes Number of frames per packet for reception. + * @param dir Direction of capability.OORX, OOTX, OORXANDTX + * @param startReceiveChannel Callback function to start receive channel. + * @param startTransmitChannel Callback function to start transmit channel. + * @param stopReceiveChannel Callback function to stop receive channel. + * @param stopTransmitChannel Callback function to stop transmit channel. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallAddG711Capability(OOH323CallData *call, int cap, int txframes, + int rxframes, int dir, + cb_StartReceiveChannel startReceiveChannel, + cb_StartTransmitChannel startTransmitChannel, + cb_StopReceiveChannel stopReceiveChannel, + cb_StopTransmitChannel stopTransmitChannel); + + +/** + * This function is used to add GSM capability for the call. The + * "ooCallAdd...Capability" functions allow to override the global endpoint + * capabilities and use specific capabilities for specific calls. + * @param call Call for which capability has to be added. + * @param cap Type of GSM capability to be added. + * @param framesPerPkt Number of GSM frames pre packet. + * @param comfortNoise Comfort noise spec for the capability. + * @param scrambled Scrambled enabled/disabled for the capability. + * @param dir Direction of capability.OORX, OOTX, OORXANDTX + * @param startReceiveChannel Callback function to start receive channel. + * @param startTransmitChannel Callback function to start transmit channel. + * @param stopReceiveChannel Callback function to stop receive channel. + * @param stopTransmitChannel Callback function to stop transmit channel. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallAddGSMCapability(OOH323CallData* call, int cap, + ASN1USINT framesPerPkt, OOBOOL comfortNoise, + OOBOOL scrambled, int dir, + cb_StartReceiveChannel startReceiveChannel, + cb_StartTransmitChannel startTransmitChannel, + cb_StopReceiveChannel stopReceiveChannel, + cb_StopTransmitChannel stopTransmitChannel); + + + + +/** + * This function is used to add H263 video capability for the call. The + * "ooCallAdd...Capability" functions allow to override the global endpoint + * capabilities and use specific capabilities for specific calls. + * @param call Call for which capability has to be added. + * @param cap Capability type - OO_H263VIDEO + * @param sqcifMPI Minimum picture interval for encoding/decoding + * of SQCIF pictures. + * @param qcifMPI Minimum picture interval for encoding/decoding + * of QCIF pictures. + * @param cifMPI Minimum picture interval for encoding/decoding + * of CIF pictures. + * @param cif4MPI Minimum picture interval for encoding/decoding + * of CIF4 pictures. + * @param cif16MPI Minimum picture interval for encoding/decoding + * of CIF16 pictures. + * @param maxBitRate Maximum bit rate in units of 100 bits/s at + * which a transmitter can transmit video or a + * receiver can receive video. + * @param dir Direction of capability.OORX, OOTX, OORXANDTX + * @param startReceiveChannel Callback function to start receive channel. + * @param startTransmitChannel Callback function to start transmit channel. + * @param stopReceiveChannel Callback function to stop receive channel. + * @param stopTransmitChannel Callback function to stop transmit channel. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCallAddH263VideoCapability(OOH323CallData *call, int cap, + unsigned sqcifMPI, unsigned qcifMPI, + unsigned cifMPI, unsigned cif4MPI, + unsigned cif16MPI, unsigned maxBitRate, + int dir, + cb_StartReceiveChannel startReceiveChannel, + cb_StartTransmitChannel startTransmitChannel, + cb_StopReceiveChannel stopReceiveChannel, + cb_StopTransmitChannel stopTransmitChannel); + + +/** + * This function is used to enable rfc 2833 capability for the call. By default + * the stack uses the dtmf settings for the endpoint. But if you want to + * enable/disable dtmf for a specific call, then you can override end-point + * settings using this function + * @param call Call for which rfc2833 has to be enabled. + * @param dynamicRTPPayloadType dynamicRTPPayloadType to be used. + * + * @return OO_OK, on success. OO_FAILED, on failure + */ +EXTERN int ooCallEnableDTMFRFC2833 + (OOH323CallData *call, int dynamicRTPPayloadType); + + +/** + * This function is used to disable rfc 2833 capability for the call. + * By default the stack uses the dtmf settings for the endpoint. But if you + * want to enable/disable dtmf for a specific call, then you can override + * end-point settings using this function + * @param call Call for which rfc2833 has to be disabled. + * + * @return OO_OK, on success. OO_FAILED, on failure + */ +EXTERN int ooCallDisableDTMFRFC2833(OOH323CallData *call); + + +/** + * This function is used to enable H.245(alphanumeric) dtmf support for the + * call. By default the stack uses the dtmf settings for the endpoint. But if + * you want to enable H.245(alphanumeric) dtmf for a specific call, then you + * can override end-point settings using this function + * @param call Call for which H.245(alphanumeric) dtmf support + * has to be enabled. + * + * @return OO_OK, on success. OO_FAILED, on failure + */ +EXTERN int ooCallEnableDTMFH245Alphanumeric(OOH323CallData *call); + +/** + * This function is used to disable H.245(alphanumeric) dtmf support for the + * call. By default the stack uses the dtmf settings for the endpoint. But if + * you want to disable H.245(alphanumeric) dtmf for a specific call, then you + * can override end-point settings using this function + * @param call Call for which H.245(alphanumeric) dtmf support + * has to be disabled. + * + * @return OO_OK, on success. OO_FAILED, on failure + */ +EXTERN int ooCallDisableDTMFH245Alphanumeric(OOH323CallData *call); + +/** + * This function is used to enable H.245(signal) dtmf support for the call. + * By default the stack uses the dtmf settings for the endpoint. But if you + * want to enable H.245(signal) dtmf for a specific call, then you can override + * end-point settings using this function + * @param call Call for which H.245(signal) dtmf support + * has to be enabled. + * + * @return OO_OK, on success. OO_FAILED, on failure + */ +EXTERN int ooCallEnableDTMFH245Signal(OOH323CallData *call); + + +/** + * This function is used to disable H.245(signal) dtmf support for the call. + * By default the stack uses the dtmf settings for the endpoint. But if you + * want to disable H.245(signal) dtmf for a specific call, then you can + * override end-point settings using this function + * @param call Call for which H.245(signal) dtmf support + * has to be disabled. + * + * @return OO_OK, on success. OO_FAILED, on failure + */ +EXTERN int ooCallDisableDTMFH245Signal(OOH323CallData *call); + + +/** + * This function is used to enable Q.931(keypad) dtmf support for the call. + * By default the stack uses the dtmf settings for the endpoint. But if you + * want to enable Q.931(keypad) dtmf support for a specific call, then you can + * override end-point settings using this function + * @param call Call for which Q.931(keypad) dtmf support + * has to be enabled. + * + * @return OO_OK, on success. OO_FAILED, on failure + */ +EXTERN int ooCallEnableDTMFQ931Keypad(OOH323CallData *call); + +/** + * This function is used to disable Q.931(keypad) dtmf support for the call. + * By default the stack uses the dtmf settings for the endpoint. But if you + * want to disable Q.931(keypad) dtmf support for a specific call, then you can + * override end-point settings using this function + * @param call Call for which Q.931(keypad) dtmf support + * has to be disabled. + * + * @return OO_OK, on success. OO_FAILED, on failure + */ +EXTERN int ooCallDisableDTMFQ931Keypad(OOH323CallData *call); + + +/** + * This function is used to find a call by using the unique token for the call. + * @param callToken The unique token for the call. + * + * @return Pointer to the call if found, NULL otherwise. + */ +EXTERN OOH323CallData* ooFindCallByToken(char *callToken); + +/** + * This function is used to end a call. Based on what stage of clearance the + * call is it takes appropriate action. + * + * @param call Handle to the call which has to be cleared. + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooEndCall(OOH323CallData *call); + +/** + * This function is used to remove a call from the list of existing calls. + * + * @param call Pointer to the call to be removed. + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooRemoveCallFromList (OOH323CallData *call); + +/** + * This function is used to clean up a call. It closes all associated sockets, + * removes the call from the global list and frees up associated memory. + * + * @param call Pointer to the call to be cleared. + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooCleanCall(OOH323CallData *call); + +/** + * This function is used to check whether a specified session in specified + * direction is active for the call. + * @param call Handle to call for which session has to be queried. + * @param sessionID Session id to identify the type of session(1 for audio, + * 2 for voice and 3 for data) + * @param dir Direction of the session(transmit/receive) + * + * @return 1, if session active. 0, otherwise. + */ +EXTERN ASN1BOOL ooIsSessionEstablished +(OOH323CallData *call, int sessionID, char* dir); + +/** + * This function can be used by an application to specify media endpoint + * information for different types of media. The stack by default uses local IP + * and port for media. An application can provide mediainfo if it wants to + * override default. + * @param call Handle to the call + * @param mediaInfo Structure which defines the media endpoint to be + * used. + * + * @return OO_OK, on success. OO_FAILED, on failure. + */ +EXTERN int ooAddMediaInfo(OOH323CallData *call, OOMediaInfo mediaInfo); + +/** + * This function is used to generate a media session id for the new media + * session for the call. + * @param call Handle to the call. + * @param type Type of media session. + * @param dir Direction of session + * + * @return Generated session id. + */ +EXTERN unsigned ooCallGenerateSessionID + (OOH323CallData *call, OOCapType type, char *dir); + +/** + * This is an handler for H245 connection retry timer. When remote end is not + * yet listening for H245 connections, this timer provides a wait and retry + * mechanism to establish H245 connection. + * @param data Timer callback data. + * + * @return OO_OK, on success. OO_FAILED, on failure + */ +EXTERN int ooCallH245ConnectionRetryTimerExpired(void *data); + +/** + * This function is used to retrieve the description text for a reason + * code. + * + * @param code Reason code. + * @return The text description string. + */ +EXTERN const char* ooGetReasonCodeText (OOUINT32 code); + +/** + * This function is used to retrieve the description text for a call + * state. + * + * @param callState Call state. + * @return The text description string. + */ +EXTERN const char* ooGetCallStateText (OOCallState callState); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif |