aboutsummaryrefslogtreecommitdiffstats
path: root/addons/ooh323c/src/ooh323ep.c
diff options
context:
space:
mode:
Diffstat (limited to 'addons/ooh323c/src/ooh323ep.c')
-rw-r--r--addons/ooh323c/src/ooh323ep.c789
1 files changed, 789 insertions, 0 deletions
diff --git a/addons/ooh323c/src/ooh323ep.c b/addons/ooh323c/src/ooh323ep.c
new file mode 100644
index 000000000..93e2ec3a3
--- /dev/null
+++ b/addons/ooh323c/src/ooh323ep.c
@@ -0,0 +1,789 @@
+/*
+ * 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.
+ *
+ *****************************************************************************/
+#include "ooh323ep.h"
+#include "ootrace.h"
+#include "ooCalls.h"
+#include "ooCapability.h"
+#include "ooGkClient.h"
+#include "ooStackCmds.h"
+#include "ooCmdChannel.h"
+/** Global endpoint structure */
+ooEndPoint gH323ep;
+
+
+extern DList g_TimerList;
+
+int ooH323EpInitialize
+ (enum OOCallMode callMode, const char* tracefile)
+{
+
+ memset(&gH323ep, 0, sizeof(ooEndPoint));
+
+ initContext(&(gH323ep.ctxt));
+ initContext(&(gH323ep.msgctxt));
+
+ if(tracefile)
+ {
+ if(strlen(tracefile)>= MAXFILENAME)
+ {
+ printf("Error:File name longer than allowed maximum %d\n",
+ MAXFILENAME-1);
+ return OO_FAILED;
+ }
+ strcpy(gH323ep.traceFile, tracefile);
+ }
+ else{
+ strcpy(gH323ep.traceFile, DEFAULT_TRACEFILE);
+ }
+
+ gH323ep.fptraceFile = fopen(gH323ep.traceFile, "w");
+ if(gH323ep.fptraceFile == NULL)
+ {
+ printf("Error:Failed to open trace file %s for write.\n",
+ gH323ep.traceFile);
+ return OO_FAILED;
+ }
+
+ /* Initialize default port ranges that will be used by stack.
+ Apps can override these by explicitely setting port ranges
+ */
+
+ gH323ep.tcpPorts.start = TCPPORTSSTART;
+ gH323ep.tcpPorts.max = TCPPORTSEND;
+ gH323ep.tcpPorts.current=TCPPORTSSTART;
+
+ gH323ep.udpPorts.start = UDPPORTSSTART;
+ gH323ep.udpPorts.max = UDPPORTSEND;
+ gH323ep.udpPorts.current = UDPPORTSSTART;
+
+ gH323ep.rtpPorts.start = RTPPORTSSTART;
+ gH323ep.rtpPorts.max = RTPPORTSEND;
+ gH323ep.rtpPorts.current = RTPPORTSSTART;
+
+ OO_SETFLAG(gH323ep.flags, OO_M_FASTSTART);
+ OO_SETFLAG(gH323ep.flags, OO_M_TUNNELING);
+ OO_SETFLAG(gH323ep.flags, OO_M_AUTOANSWER);
+ OO_CLRFLAG(gH323ep.flags, OO_M_GKROUTED);
+
+ gH323ep.aliases = NULL;
+
+ gH323ep.termType = DEFAULT_TERMTYPE;
+
+ gH323ep.t35CountryCode = DEFAULT_T35COUNTRYCODE;
+
+ gH323ep.t35Extension = DEFAULT_T35EXTENSION;
+
+ gH323ep.manufacturerCode = DEFAULT_MANUFACTURERCODE;
+
+ gH323ep.productID = DEFAULT_PRODUCTID;
+
+ gH323ep.versionID = OOH323C_VERSION;
+
+ gH323ep.callType = T_H225CallType_pointToPoint;
+ ooGetLocalIPAddress(gH323ep.signallingIP);
+ gH323ep.listenPort = DEFAULT_H323PORT;
+
+ gH323ep.listener = NULL;
+
+ ooH323EpSetCallerID(DEFAULT_CALLERID);
+
+
+ gH323ep.myCaps = NULL;
+ gH323ep.noOfCaps = 0;
+ gH323ep.callList = NULL;
+ gH323ep.dtmfmode = 0;
+ gH323ep.callingPartyNumber[0]='\0';
+ gH323ep.callMode = callMode;
+ gH323ep.isGateway = FALSE;
+
+ dListInit(&g_TimerList);/* This is for test application chansetup only*/
+
+ gH323ep.callEstablishmentTimeout = DEFAULT_CALLESTB_TIMEOUT;
+
+ gH323ep.msdTimeout = DEFAULT_MSD_TIMEOUT;
+
+ gH323ep.tcsTimeout = DEFAULT_TCS_TIMEOUT;
+
+ gH323ep.logicalChannelTimeout = DEFAULT_LOGICALCHAN_TIMEOUT;
+
+ gH323ep.sessionTimeout = DEFAULT_ENDSESSION_TIMEOUT;
+ gH323ep.ifList = NULL;
+
+ ooSetTraceThreshold(OOTRCLVLINFO);
+ OO_SETFLAG(gH323ep.flags, OO_M_ENDPOINTCREATED);
+
+ gH323ep.cmdSock = 0;
+ return OO_OK;
+}
+
+EXTERN int ooH323EpSetAsGateway()
+{
+ gH323ep.isGateway = TRUE;
+ return OO_OK;
+}
+
+
+int ooH323EpSetLocalAddress(const char* localip, int listenport)
+{
+ if(localip)
+ {
+ strcpy(gH323ep.signallingIP, localip);
+ OOTRACEINFO2("Signalling IP address is set to %s\n", localip);
+ }
+
+ if(listenport)
+ {
+ gH323ep.listenPort = listenport;
+ OOTRACEINFO2("Listen port number is set to %d\n", listenport);
+ }
+ return OO_OK;
+}
+
+int ooH323EpAddAliasH323ID(const char *h323id)
+{
+ ooAliases * psNewAlias=NULL;
+ psNewAlias = (ooAliases*)memAlloc(&gH323ep.ctxt, sizeof(ooAliases));
+ if(!psNewAlias)
+ {
+ OOTRACEERR1("Error: Failed to allocate memory for new H323-ID alias\n");
+ return OO_FAILED;
+ }
+ psNewAlias->type = T_H225AliasAddress_h323_ID;
+ psNewAlias->registered = FALSE;
+ psNewAlias->value = (char*) memAlloc(&gH323ep.ctxt, strlen(h323id)+1);
+ if(!psNewAlias->value)
+ {
+ OOTRACEERR1("Error: Failed to allocate memory for the new H323-ID alias "
+ "value\n");
+ memFreePtr(&gH323ep.ctxt, psNewAlias);
+ return OO_FAILED;
+ }
+ strcpy(psNewAlias->value, h323id);
+ psNewAlias->next = gH323ep.aliases;
+ gH323ep.aliases = psNewAlias;
+ OOTRACEDBGA2("Added alias: H323ID - %s\n", h323id);
+ return OO_OK;
+}
+
+int ooH323EpAddAliasDialedDigits(const char* dialedDigits)
+{
+ ooAliases * psNewAlias=NULL;
+ psNewAlias = (ooAliases*)memAlloc(&gH323ep.ctxt, sizeof(ooAliases));
+ if(!psNewAlias)
+ {
+ OOTRACEERR1("Error: Failed to allocate memory for new DialedDigits "
+ "alias\n");
+ return OO_FAILED;
+ }
+ psNewAlias->type = T_H225AliasAddress_dialedDigits;
+ psNewAlias->registered = FALSE;
+ psNewAlias->value = (char*) memAlloc(&gH323ep.ctxt, strlen(dialedDigits)+1);
+ if(!psNewAlias->value)
+ {
+ OOTRACEERR1("Error: Failed to allocate memory for the new DialedDigits"
+ " alias value\n");
+ memFreePtr(&gH323ep.ctxt, psNewAlias);
+ return OO_FAILED;
+ }
+ strcpy(psNewAlias->value, dialedDigits);
+ psNewAlias->next = gH323ep.aliases;
+ gH323ep.aliases = psNewAlias;
+ OOTRACEDBGA2("Added alias: DialedDigits - %s\n", dialedDigits);
+ return OO_OK;
+}
+
+int ooH323EpAddAliasURLID(const char * url)
+{
+ ooAliases * psNewAlias=NULL;
+ psNewAlias = (ooAliases*)memAlloc(&gH323ep.ctxt, sizeof(ooAliases));
+ if(!psNewAlias)
+ {
+ OOTRACEERR1("Error: Failed to allocate memory for new URL-ID alias\n");
+ return OO_FAILED;
+ }
+ psNewAlias->type = T_H225AliasAddress_url_ID;
+ psNewAlias->registered = FALSE;
+ psNewAlias->value = (char*) memAlloc(&gH323ep.ctxt, strlen(url)+1);
+ if(!psNewAlias->value)
+ {
+ OOTRACEERR1("Error: Failed to allocate memory for the new URL-ID alias"
+ " value\n");
+ memFreePtr(&gH323ep.ctxt, psNewAlias);
+ return OO_FAILED;
+ }
+ strcpy(psNewAlias->value, url);
+ psNewAlias->next = gH323ep.aliases;
+ gH323ep.aliases = psNewAlias;
+ OOTRACEDBGA2("Added alias: URL-ID - %s\n", url);
+ return OO_OK;
+}
+
+int ooH323EpAddAliasEmailID(const char * email)
+{
+ ooAliases * psNewAlias=NULL;
+ psNewAlias = (ooAliases*)memAlloc(&gH323ep.ctxt, sizeof(ooAliases));
+ if(!psNewAlias)
+ {
+ OOTRACEERR1("Error: Failed to allocate memory for new Email-ID alias\n");
+ return OO_FAILED;
+ }
+ psNewAlias->type = T_H225AliasAddress_email_ID;
+ psNewAlias->registered = FALSE;
+ psNewAlias->value = (char*) memAlloc(&gH323ep.ctxt, strlen(email)+1);
+ if(!psNewAlias->value)
+ {
+ OOTRACEERR1("Error: Failed to allocate memory for the new Email-ID alias"
+ " value\n");
+ memFreePtr(&gH323ep.ctxt, psNewAlias);
+ return OO_FAILED;
+ }
+ strcpy(psNewAlias->value, email);
+ psNewAlias->next = gH323ep.aliases;
+ gH323ep.aliases = psNewAlias;
+ OOTRACEDBGA2("Added alias: Email-ID - %s\n", email);
+ return OO_OK;
+}
+
+int ooH323EpAddAliasTransportID(const char * ipaddress)
+{
+ ooAliases * psNewAlias=NULL;
+ psNewAlias = (ooAliases*)memAlloc(&gH323ep.ctxt, sizeof(ooAliases));
+ if(!psNewAlias)
+ {
+ OOTRACEERR1("Error: Failed to allocate memory for new Transport-ID "
+ "alias\n");
+ return OO_FAILED;
+ }
+ psNewAlias->type = T_H225AliasAddress_transportID;
+ psNewAlias->registered = FALSE;
+ psNewAlias->value = (char*) memAlloc(&gH323ep.ctxt, strlen(ipaddress)+1);
+ if(!psNewAlias->value)
+ {
+ OOTRACEERR1("Error: Failed to allocate memory for the new Transport-ID "
+ "alias value\n");
+ memFreePtr(&gH323ep.ctxt, psNewAlias);
+ return OO_FAILED;
+ }
+ strcpy(psNewAlias->value, ipaddress);
+ psNewAlias->next = gH323ep.aliases;
+ gH323ep.aliases = psNewAlias;
+ OOTRACEDBGA2("Added alias: Transport-ID - %s\n", ipaddress);
+ return OO_OK;
+}
+
+int ooH323EpClearAllAliases(void)
+{
+ ooAliases *pAlias = NULL, *pTemp;
+ if(gH323ep.aliases)
+ {
+ pAlias = gH323ep.aliases;
+ while(pAlias)
+ {
+ pTemp = pAlias;
+ pAlias = pAlias->next;
+ memFreePtr(&gH323ep.ctxt, pTemp);
+ }
+ gH323ep.aliases = NULL;
+ }
+ return OO_OK;
+}
+
+
+int ooH323EpSetH225MsgCallbacks(OOH225MsgCallbacks h225Callbacks)
+{
+ gH323ep.h225Callbacks.onReceivedSetup = h225Callbacks.onReceivedSetup;
+ gH323ep.h225Callbacks.onReceivedConnect = h225Callbacks.onReceivedConnect;
+ gH323ep.h225Callbacks.onBuiltSetup = h225Callbacks.onBuiltSetup;
+ gH323ep.h225Callbacks.onBuiltConnect = h225Callbacks.onBuiltConnect;
+
+ return OO_OK;
+}
+
+int ooH323EpSetH323Callbacks(OOH323CALLBACKS h323Callbacks)
+{
+ gH323ep.h323Callbacks.onNewCallCreated = h323Callbacks.onNewCallCreated;
+ gH323ep.h323Callbacks.onAlerting = h323Callbacks.onAlerting;
+ gH323ep.h323Callbacks.onIncomingCall = h323Callbacks.onIncomingCall;
+ gH323ep.h323Callbacks.onOutgoingCall = h323Callbacks.onOutgoingCall;
+ gH323ep.h323Callbacks.onCallEstablished = h323Callbacks.onCallEstablished;
+ gH323ep.h323Callbacks.onCallForwarded = h323Callbacks.onCallForwarded;
+ gH323ep.h323Callbacks.onCallCleared = h323Callbacks.onCallCleared;
+ gH323ep.h323Callbacks.openLogicalChannels = h323Callbacks.openLogicalChannels;
+ gH323ep.h323Callbacks.onReceivedDTMF = h323Callbacks.onReceivedDTMF;
+ return OO_OK;
+}
+
+int ooH323EpDestroy(void)
+{
+ /* free any internal memory allocated
+ close trace file free context structure
+ */
+ OOH323CallData * cur, *temp;
+ if(OO_TESTFLAG(gH323ep.flags, OO_M_ENDPOINTCREATED))
+ {
+ OOTRACEINFO1("Destroying H323 Endpoint\n");
+ if(gH323ep.callList)
+ {
+ cur = gH323ep.callList;
+ while(cur)
+ {
+ temp = cur;
+ cur = cur->next;
+ temp->callEndReason = OO_REASON_LOCAL_CLEARED;
+ ooCleanCall(temp);
+ }
+ gH323ep.callList = NULL;
+ }
+
+
+ if(gH323ep.listener)
+ {
+ ooSocketClose(*(gH323ep.listener));
+ gH323ep.listener = NULL;
+ }
+
+ ooGkClientDestroy();
+
+ if(gH323ep.fptraceFile)
+ {
+ fclose(gH323ep.fptraceFile);
+ gH323ep.fptraceFile = NULL;
+ }
+
+ freeContext(&(gH323ep.ctxt));
+
+ OO_CLRFLAG(gH323ep.flags, OO_M_ENDPOINTCREATED);
+ }
+ return OO_OK;
+}
+
+int ooH323EpEnableGkRouted(void)
+{
+ OO_SETFLAG(gH323ep.flags, OO_M_GKROUTED);
+ return OO_OK;
+}
+
+int ooH323EpDisableGkRouted(void)
+{
+ OO_CLRFLAG(gH323ep.flags, OO_M_GKROUTED);
+ return OO_OK;
+}
+
+int ooH323EpEnableAutoAnswer(void)
+{
+ OO_SETFLAG(gH323ep.flags, OO_M_AUTOANSWER);
+ return OO_OK;
+}
+
+int ooH323EpDisableAutoAnswer(void)
+{
+ OO_CLRFLAG(gH323ep.flags, OO_M_AUTOANSWER);
+ return OO_OK;
+}
+
+int ooH323EpEnableManualRingback(void)
+{
+ OO_SETFLAG(gH323ep.flags, OO_M_MANUALRINGBACK);
+ return OO_OK;
+}
+
+
+int ooH323EpDisableManualRingback(void)
+{
+ OO_CLRFLAG(gH323ep.flags, OO_M_MANUALRINGBACK);
+ return OO_OK;
+}
+
+int ooH323EpEnableMediaWaitForConnect(void)
+{
+ OO_SETFLAG(gH323ep.flags, OO_M_MEDIAWAITFORCONN);
+ return OO_OK;
+}
+
+int ooH323EpDisableMediaWaitForConnect(void)
+{
+ OO_CLRFLAG(gH323ep.flags, OO_M_MEDIAWAITFORCONN);
+ return OO_OK;
+}
+
+int ooH323EpEnableFastStart(void)
+{
+ OO_SETFLAG(gH323ep.flags, OO_M_FASTSTART);
+ return OO_OK;
+}
+
+int ooH323EpDisableFastStart(void)
+{
+ OO_CLRFLAG(gH323ep.flags, OO_M_FASTSTART);
+ return OO_OK;
+}
+
+int ooH323EpEnableH245Tunneling(void)
+{
+ OO_SETFLAG(gH323ep.flags, OO_M_TUNNELING);
+ return OO_OK;
+}
+
+int ooH323EpDisableH245Tunneling(void)
+{
+ OO_CLRFLAG(gH323ep.flags, OO_M_TUNNELING);
+ return OO_OK;
+}
+
+int ooH323EpSetTermType(int value)
+{
+ gH323ep.termType = value;
+ return OO_OK;
+}
+
+int ooH323EpSetProductID (const char* productID)
+{
+ if (0 != productID) {
+ char* pstr = (char*) memAlloc (&gH323ep.ctxt, strlen(productID)+1);
+ strcpy (pstr, productID);
+ if(gH323ep.productID)
+ memFreePtr(&gH323ep.ctxt, gH323ep.productID);
+ gH323ep.productID = pstr;
+ return OO_OK;
+ }
+ else return OO_FAILED;
+}
+
+int ooH323EpSetVersionID (const char* versionID)
+{
+ if (0 != versionID) {
+ char* pstr = (char*) memAlloc (&gH323ep.ctxt, strlen(versionID)+1);
+ strcpy (pstr, versionID);
+ if(gH323ep.versionID)
+ memFreePtr(&gH323ep.ctxt, gH323ep.versionID);
+ gH323ep.versionID = pstr;
+ return OO_OK;
+ }
+ else return OO_FAILED;
+}
+
+int ooH323EpSetCallerID (const char* callerID)
+{
+ if (0 != callerID) {
+ char* pstr = (char*) memAlloc (&gH323ep.ctxt, strlen(callerID)+1);
+ strcpy (pstr, callerID);
+ if(gH323ep.callerid)
+ memFreePtr(&gH323ep.ctxt, gH323ep.callerid);
+ gH323ep.callerid = pstr;
+ return OO_OK;
+ }
+ else return OO_FAILED;
+}
+
+int ooH323EpSetCallingPartyNumber(const char* number)
+{
+ int ret=OO_OK;
+ if(number)
+ {
+ strncpy(gH323ep.callingPartyNumber, number,
+ sizeof(gH323ep.callingPartyNumber)-1);
+ ret = ooH323EpAddAliasDialedDigits((char*)number);
+ return ret;
+ }
+ else return OO_FAILED;
+}
+
+int ooH323EpSetTraceLevel(int traceLevel)
+{
+ ooSetTraceThreshold(traceLevel);
+ return OO_OK;
+}
+
+void ooH323EpPrintConfig(void)
+{
+ OOTRACEINFO1("H.323 Endpoint Configuration is as follows:\n");
+
+ OOTRACEINFO2("\tTrace File: %s\n", gH323ep.traceFile);
+
+ if(!OO_TESTFLAG(gH323ep.flags, OO_M_FASTSTART))
+ {
+ OOTRACEINFO1("\tFastStart - disabled\n");
+ }
+ else{
+ OOTRACEINFO1("\tFastStart - enabled\n");
+ }
+
+ if(!OO_TESTFLAG(gH323ep.flags, OO_M_TUNNELING))
+ {
+ OOTRACEINFO1("\tH245 Tunneling - disabled\n");
+ }
+ else{
+ OOTRACEINFO1("\tH245 Tunneling - enabled\n");
+ }
+
+ if(!OO_TESTFLAG(gH323ep.flags, OO_M_MEDIAWAITFORCONN))
+ {
+ OOTRACEINFO1("\tMediaWaitForConnect - disabled\n");
+ }
+ else{
+ OOTRACEINFO1("\tMediaWaitForConnect - enabled\n");
+ }
+
+ if(OO_TESTFLAG(gH323ep.flags, OO_M_AUTOANSWER))
+ OOTRACEINFO1("\tAutoAnswer - enabled\n");
+ else
+ OOTRACEINFO1("\tAutoAnswer - disabled\n");
+
+ OOTRACEINFO2("\tTerminal Type - %d\n", gH323ep.termType);
+
+ OOTRACEINFO2("\tT35 CountryCode - %d\n", gH323ep.t35CountryCode);
+
+ OOTRACEINFO2("\tT35 Extension - %d\n", gH323ep.t35Extension);
+
+ OOTRACEINFO2("\tManufacturer Code - %d\n", gH323ep.manufacturerCode);
+
+ OOTRACEINFO2("\tProductID - %s\n", gH323ep.productID);
+
+ OOTRACEINFO2("\tVersionID - %s\n", gH323ep.versionID);
+
+ OOTRACEINFO2("\tLocal signalling IP address - %s\n", gH323ep.signallingIP);
+
+ OOTRACEINFO2("\tH225 ListenPort - %d\n", gH323ep.listenPort);
+
+ OOTRACEINFO2("\tCallerID - %s\n", gH323ep.callerid);
+
+
+ OOTRACEINFO2("\tCall Establishment Timeout - %d seconds\n",
+ gH323ep.callEstablishmentTimeout);
+
+ OOTRACEINFO2("\tMasterSlaveDetermination Timeout - %d seconds\n",
+ gH323ep.msdTimeout);
+
+ OOTRACEINFO2("\tTerminalCapabilityExchange Timeout - %d seconds\n",
+ gH323ep.tcsTimeout);
+
+ OOTRACEINFO2("\tLogicalChannel Timeout - %d seconds\n",
+ gH323ep.logicalChannelTimeout);
+
+ OOTRACEINFO2("\tSession Timeout - %d seconds\n", gH323ep.sessionTimeout);
+
+ return;
+}
+
+
+int ooH323EpAddG711Capability(int cap, int txframes, int rxframes, int dir,
+ cb_StartReceiveChannel startReceiveChannel,
+ cb_StartTransmitChannel startTransmitChannel,
+ cb_StopReceiveChannel stopReceiveChannel,
+ cb_StopTransmitChannel stopTransmitChannel)
+{
+ return ooCapabilityAddSimpleCapability(NULL, cap, txframes, rxframes, FALSE,
+ dir, startReceiveChannel, startTransmitChannel,
+ stopReceiveChannel, stopTransmitChannel, FALSE);
+}
+
+int ooH323EpAddG728Capability(int cap, int txframes, int rxframes, int dir,
+ cb_StartReceiveChannel startReceiveChannel,
+ cb_StartTransmitChannel startTransmitChannel,
+ cb_StopReceiveChannel stopReceiveChannel,
+ cb_StopTransmitChannel stopTransmitChannel)
+{
+ return ooCapabilityAddSimpleCapability(NULL, cap, txframes, rxframes, FALSE,
+ dir, startReceiveChannel, startTransmitChannel,
+ stopReceiveChannel, stopTransmitChannel, FALSE);
+}
+
+int ooH323EpAddG729Capability(int cap, int txframes, int rxframes, int dir,
+ cb_StartReceiveChannel startReceiveChannel,
+ cb_StartTransmitChannel startTransmitChannel,
+ cb_StopReceiveChannel stopReceiveChannel,
+ cb_StopTransmitChannel stopTransmitChannel)
+{
+ return ooCapabilityAddSimpleCapability(NULL, cap, txframes, rxframes, FALSE,
+ dir, startReceiveChannel, startTransmitChannel,
+ stopReceiveChannel, stopTransmitChannel, FALSE);
+}
+
+
+int ooH323EpAddG7231Capability(int cap, int txframes, int rxframes,
+ OOBOOL silenceSuppression, int dir,
+ cb_StartReceiveChannel startReceiveChannel,
+ cb_StartTransmitChannel startTransmitChannel,
+ cb_StopReceiveChannel stopReceiveChannel,
+ cb_StopTransmitChannel stopTransmitChannel)
+{
+ return ooCapabilityAddSimpleCapability(NULL, cap, txframes, rxframes,
+ silenceSuppression, dir, startReceiveChannel,
+ startTransmitChannel, stopReceiveChannel,
+ stopTransmitChannel, FALSE);
+}
+
+int ooH323EpAddGSMCapability(int cap, ASN1USINT framesPerPkt,
+ OOBOOL comfortNoise, OOBOOL scrambled, int dir,
+ cb_StartReceiveChannel startReceiveChannel,
+ cb_StartTransmitChannel startTransmitChannel,
+ cb_StopReceiveChannel stopReceiveChannel,
+ cb_StopTransmitChannel stopTransmitChannel)
+{
+ return ooCapabilityAddGSMCapability(NULL, cap, framesPerPkt, comfortNoise,
+ scrambled, dir, startReceiveChannel,
+ startTransmitChannel, stopReceiveChannel,
+ stopTransmitChannel, FALSE);
+}
+
+
+int ooH323EpAddH263VideoCapability(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)
+{
+
+ return ooCapabilityAddH263VideoCapability(NULL, sqcifMPI, qcifMPI, cifMPI,
+ cif4MPI, cif16MPI, maxBitRate,dir,
+ startReceiveChannel, startTransmitChannel,
+ stopReceiveChannel, stopTransmitChannel,
+ FALSE);
+
+}
+
+
+int ooH323EpEnableDTMFRFC2833(int dynamicRTPPayloadType)
+{
+ return ooCapabilityEnableDTMFRFC2833(NULL, dynamicRTPPayloadType);
+}
+
+int ooH323EpDisableDTMFRFC2833(void)
+{
+ return ooCapabilityDisableDTMFRFC2833(NULL);
+}
+
+int ooH323EpEnableDTMFH245Alphanumeric()
+{
+ return ooCapabilityEnableDTMFH245Alphanumeric(NULL);
+}
+
+int ooH323EpDisableDTMFH245Alphanumeric()
+{
+ return ooCapabilityDisableDTMFH245Alphanumeric(NULL);
+}
+
+int ooH323EpEnableDTMFH245Signal()
+{
+ return ooCapabilityEnableDTMFH245Signal(NULL);
+}
+
+int ooH323EpDisableDTMFH245Signal()
+{
+ return ooCapabilityDisableDTMFH245Signal(NULL);
+}
+
+int ooH323EpEnableDTMFQ931Keypad()
+{
+ return ooCapabilityEnableDTMFQ931Keypad(NULL);
+}
+
+int ooH323EpDisableDTMFQ931Keypad()
+{
+ return ooCapabilityDisableDTMFQ931Keypad(NULL);
+}
+
+int ooH323EpSetGkClientCallbacks(OOGKCLIENTCALLBACKS gkClientCallbacks)
+{
+
+ if(gH323ep.gkClient)
+ {
+ return ooGkClientSetCallbacks(gH323ep.gkClient, gkClientCallbacks);
+ }
+ else{
+ OOTRACEERR1("Error:Gk Client hasn't been initialized yet\n");
+ return OO_FAILED;
+ }
+
+}
+
+
+
+/* 0-1024 are reserved for well known services */
+int ooH323EpSetTCPPortRange(int base, int max)
+{
+ if(base <= 1024)
+ gH323ep.tcpPorts.start = 1025;
+ else
+ gH323ep.tcpPorts.start = base;
+ if(max > 65500)
+ gH323ep.tcpPorts.max = 65500;
+ else
+ gH323ep.tcpPorts.max = max;
+
+ if(gH323ep.tcpPorts.max<gH323ep.tcpPorts.start)
+ {
+ OOTRACEERR1("Error: Failed to set tcp ports- "
+ "Max port number less than Start port number\n");
+ return OO_FAILED;
+ }
+ gH323ep.tcpPorts.current = gH323ep.tcpPorts.start;
+
+ OOTRACEINFO1("TCP port range initialize - successful\n");
+ return OO_OK;
+}
+
+int ooH323EpSetUDPPortRange(int base, int max)
+{
+ if(base <= 1024)
+ gH323ep.udpPorts.start = 1025;
+ else
+ gH323ep.udpPorts.start = base;
+ if(max > 65500)
+ gH323ep.udpPorts.max = 65500;
+ else
+ gH323ep.udpPorts.max = max;
+
+ if(gH323ep.udpPorts.max<gH323ep.udpPorts.start)
+ {
+ OOTRACEERR1("Error: Failed to set udp ports- Max port number"
+ " less than Start port number\n");
+ return OO_FAILED;
+ }
+
+ gH323ep.udpPorts.current = gH323ep.udpPorts.start;
+
+ OOTRACEINFO1("UDP port range initialize - successful\n");
+
+ return OO_OK;
+}
+
+int ooH323EpSetRTPPortRange(int base, int max)
+{
+ if(base <= 1024)
+ gH323ep.rtpPorts.start = 1025;
+ else
+ gH323ep.rtpPorts.start = base;
+ if(max > 65500)
+ gH323ep.rtpPorts.max = 65500;
+ else
+ gH323ep.rtpPorts.max = max;
+
+ if(gH323ep.rtpPorts.max<gH323ep.rtpPorts.start)
+ {
+ OOTRACEERR1("Error: Failed to set rtp ports- Max port number"
+ " less than Start port number\n");
+ return OO_FAILED;
+ }
+
+ gH323ep.rtpPorts.current = gH323ep.rtpPorts.start;
+ OOTRACEINFO1("RTP port range initialize - successful\n");
+ return OO_OK;
+}
+