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 + -
显示快捷键?