oocalls.c
来自「一个非常美妙的proxy。功能强大。基于sip的协议。如果还要的话」· C语言 代码 · 共 781 行 · 第 1/2 页
C
781 行
int ooCallClearAliases(OOH323CallData *call){ if(call->ourAliases) memFreePtr(call->pctxt, call->ourAliases); call->ourAliases = NULL; return OO_OK;}int ooCallAddAlias (OOH323CallData *call, int aliasType, const char *value, OOBOOL local){ ooAliases * psNewAlias=NULL; psNewAlias = (ooAliases*)memAlloc(call->pctxt, sizeof(ooAliases)); if(!psNewAlias) { OOTRACEERR3("Error:Memory - ooCallAddAlias - psNewAlias" "(%s, %s)\n", call->callType, call->callToken); return OO_FAILED; } psNewAlias->type = aliasType; psNewAlias->value = (char*) memAlloc(call->pctxt, strlen(value)+1); if(!psNewAlias->value) { OOTRACEERR3("Error:Memory - ooCallAddAlias - psNewAlias->value" " (%s, %s)\n", call->callType, call->callToken); memFreePtr(call->pctxt, psNewAlias); return OO_FAILED; } strcpy(psNewAlias->value, value); if(local) { psNewAlias->next = call->ourAliases; call->ourAliases = psNewAlias; }else { psNewAlias->next = call->remoteAliases; call->remoteAliases = psNewAlias; } OOTRACEDBGC5("Added %s alias %s to call. (%s, %s)\n", local?"local":"remote", value, call->callType, call->callToken); return OO_OK;}int ooCallAddAliasH323ID(OOH323CallData *call, const char* h323id){ return ooCallAddAlias(call, T_H225AliasAddress_h323_ID, h323id, TRUE);}int ooCallAddAliasDialedDigits(OOH323CallData *call, const char* dialedDigits){ return ooCallAddAlias (call, T_H225AliasAddress_dialedDigits, dialedDigits, TRUE);}int ooCallAddAliasEmailID(OOH323CallData *call, const char* email){ return ooCallAddAlias(call, T_H225AliasAddress_email_ID, email, TRUE);}int ooCallAddAliasURLID(OOH323CallData *call, const char* url){ return ooCallAddAlias(call, T_H225AliasAddress_url_ID, url, TRUE);} int ooCallAddRemoteAliasH323ID(OOH323CallData *call, const char* h323id){ return ooCallAddAlias(call, T_H225AliasAddress_h323_ID, h323id, FALSE);}int ooCallAddRemoteAliasDialedDigits (OOH323CallData *call, const char* dialedDigits){ return ooCallAddAlias (call, T_H225AliasAddress_dialedDigits, dialedDigits, FALSE);}/* Used to override global end point capabilities and add call specific capabilities */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){ return ooCapabilityAddSimpleCapability(call, cap, txframes, rxframes, silenceSuppression, dir, startReceiveChannel, startTransmitChannel, stopReceiveChannel, stopTransmitChannel, FALSE);}int ooCallAddG729Capability(OOH323CallData *call, int cap, int txframes, int rxframes, int dir, cb_StartReceiveChannel startReceiveChannel, cb_StartTransmitChannel startTransmitChannel, cb_StopReceiveChannel stopReceiveChannel, cb_StopTransmitChannel stopTransmitChannel){ return ooCapabilityAddSimpleCapability(call, cap, txframes, rxframes, FALSE, dir, startReceiveChannel, startTransmitChannel, stopReceiveChannel, stopTransmitChannel, FALSE);}int ooCallAddG711Capability(OOH323CallData *call, int cap, int txframes, int rxframes, int dir, cb_StartReceiveChannel startReceiveChannel, cb_StartTransmitChannel startTransmitChannel, cb_StopReceiveChannel stopReceiveChannel, cb_StopTransmitChannel stopTransmitChannel){ return ooCapabilityAddSimpleCapability(call, cap, txframes, rxframes, FALSE, dir, startReceiveChannel, startTransmitChannel, stopReceiveChannel, stopTransmitChannel, FALSE);}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){ return ooCapabilityAddGSMCapability(call, cap, framesPerPkt, comfortNoise, scrambled, dir, startReceiveChannel, startTransmitChannel, stopReceiveChannel, stopTransmitChannel, FALSE);}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){ return ooCapabilityAddH263VideoCapability(call, sqcifMPI, qcifMPI, cifMPI, cif4MPI, cif16MPI, maxBitRate,dir, startReceiveChannel, startTransmitChannel, stopReceiveChannel, stopTransmitChannel, FALSE);}int ooCallEnableDTMFRFC2833(OOH323CallData *call, int dynamicRTPPayloadType){ return ooCapabilityEnableDTMFRFC2833(call, dynamicRTPPayloadType);}int ooCallDisableDTMFRFC2833(OOH323CallData *call){ return ooCapabilityDisableDTMFRFC2833(call);}int ooCallEnableDTMFH245Alphanumeric(OOH323CallData *call){ return ooCapabilityEnableDTMFH245Alphanumeric(call);}int ooCallDisableDTMFH245Alphanumeric(OOH323CallData *call){ return ooCapabilityDisableDTMFH245Alphanumeric(call);}int ooCallEnableDTMFH245Signal(OOH323CallData *call){ return ooCapabilityEnableDTMFH245Signal(call);}int ooCallDisableDTMFH245Signal(OOH323CallData *call){ return ooCapabilityDisableDTMFH245Signal(call);}int ooCallEnableDTMFQ931Keypad(OOH323CallData *call){ return ooCapabilityEnableDTMFQ931Keypad(call);}int ooCallDisableDTMFQ931Keypad(OOH323CallData *call){ return ooCapabilityDisableDTMFQ931Keypad(call);}OOH323CallData* ooFindCallByToken(char *callToken){ OOH323CallData *call; if(!callToken) { OOTRACEERR1("ERROR:Invalid call token passed - ooFindCallByToken\n"); return NULL; } if(!gH323ep.callList) { OOTRACEERR1("ERROR: Empty calllist - ooFindCallByToken failed\n"); return NULL; } call = gH323ep.callList; while(call) { if(!strcmp(call->callToken, callToken)) break; else call = call->next; } if(!call) { OOTRACEERR2("ERROR:Call with token %s not found\n", callToken); return NULL; } return call;}/* Checks whether session with suplied ID and direction is already active*/ASN1BOOL ooIsSessionEstablished(OOH323CallData *call, int sessionID, char* dir){ OOLogicalChannel * temp = NULL; temp = call->logicalChans; while(temp) { if(temp->sessionID == sessionID && temp->state == OO_LOGICALCHAN_ESTABLISHED && !strcmp(temp->dir, dir) ) return TRUE; temp = temp->next; } return FALSE;}int ooAddMediaInfo(OOH323CallData *call, OOMediaInfo mediaInfo){ OOMediaInfo *newMediaInfo=NULL; if(!call) { OOTRACEERR3("Error:Invalid 'call' param for ooAddMediaInfo.(%s, %s)\n", call->callType, call->callToken); return OO_FAILED; } newMediaInfo = (OOMediaInfo*) memAlloc(call->pctxt, sizeof(OOMediaInfo)); if(!newMediaInfo) { OOTRACEERR3("Error:Memory - ooAddMediaInfo - newMediaInfo. " "(%s, %s)\n", call->callType, call->callToken); return OO_FAILED; } memcpy (newMediaInfo, &mediaInfo, sizeof(OOMediaInfo)); OOTRACEDBGC4("Configured mediainfo for cap %s (%s, %s)\n", ooGetCapTypeText(mediaInfo.cap), call->callType, call->callToken); if(!call->mediaInfo) { newMediaInfo->next = NULL; call->mediaInfo = newMediaInfo; } else { newMediaInfo->next = call->mediaInfo; call->mediaInfo = newMediaInfo; } return OO_OK;}unsigned ooCallGenerateSessionID (OOH323CallData *call, OOCapType type, char *dir){ unsigned sessionID=0; if(type == OO_CAP_TYPE_AUDIO) { if(!ooGetLogicalChannel(call, 1, dir)) { sessionID = 1; } else{ if(call->masterSlaveState == OO_MasterSlave_Master) sessionID = call->nextSessionID++; else{ OOTRACEDBGC4("Session id for %s channel of type audio has to be " "provided by remote.(%s, %s)\n", dir, call->callType, call->callToken); sessionID = 0; /* Will be assigned by remote */ } } } if(type == OO_CAP_TYPE_VIDEO) { if(!ooGetLogicalChannel(call, 2, dir)) { sessionID = 2; } else{ if(call->masterSlaveState == OO_MasterSlave_Master) sessionID = call->nextSessionID++; else{ sessionID = 0; /* Will be assigned by remote */ OOTRACEDBGC4("Session id for %s channel of type video has to be " "provided by remote.(%s, %s)\n", dir, call->callType, call->callToken); } } } return sessionID;}int ooCallH245ConnectionRetryTimerExpired(void *data){ ooTimerCallback *cbData = (ooTimerCallback*) data; OOH323CallData *call = cbData->call; OOTRACEINFO3("H245 connection retry timer expired. (%s, %s)\n", call->callType, call->callToken); memFreePtr(call->pctxt, cbData); call->h245ConnectionAttempts++; ooCreateH245Connection(call); return OO_OK;}const char* ooGetReasonCodeText (OOUINT32 code){ static const char* reasonCodeText[] = { "OO_REASON_UNKNOWN", "OO_REASON_INVALIDMESSAGE", "OO_REASON_TRANSPORTFAILURE", "OO_REASON_NOROUTE", "OO_REASON_NOUSER", "OO_REASON_NOBW", "OO_REASON_GK_NOCALLEDUSER", "OO_REASON_GK_NOCALLERUSER", "OO_REASON_GK_NORESOURCES", "OO_REASON_GK_UNREACHABLE", "OO_REASON_GK_CLEARED", "OO_REASON_NOCOMMON_CAPABILITIES", "OO_REASON_REMOTE_FWDED", "OO_REASON_LOCAL_FWDED", "OO_REASON_REMOTE_CLEARED", "OO_REASON_LOCAL_CLEARED", "OO_REASON_REMOTE_BUSY", "OO_REASON_LOCAL_BUSY", "OO_REASON_REMOTE_NOANSWER", "OO_REASON_LOCAL_NOTANSWERED", "OO_REASON_REMOTE_REJECTED", "OO_REASON_LOCAL_REJECTED", "OO_REASON_REMOTE_CONGESTED", "OO_REASON_LOCAL_CONGESTED" }; return ooUtilsGetText (code, reasonCodeText, OONUMBEROF(reasonCodeText));}const char* ooGetCallStateText (OOCallState callState){ static const char* callStateText[] = { "OO_CALL_CREATED", "OO_CALL_WAITING_ADMISSION", "OO_CALL_CONNECTING", "OO_CALL_CONNECTED", "OO_CALL_CLEAR", "OO_CALL_CLEAR_RELEASERECVD", "OO_CALL_CLEAR_RELEASESENT", "OO_CALL_CLEARED" }; return ooUtilsGetText (callState, callStateText, OONUMBEROF(callStateText));}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?