⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mgcppackage.c

📁 mgcp协议源代码和测试程序,还有一个编译器
💻 C
📖 第 1 页 / 共 2 页
字号:
};
static DWORD AnnouncementServerPackage [] = 
{
  (DWORD)"ann",  A_PLAY_ANNOUNCEMENT,   MGCP_SIG, SIG_TO, 0,
  (DWORD)"oc",   A_OPERATION_COMPLETE,  MGCP_EVT, 0,      0,
  (DWORD)"of",   A_OPERATION_FAILURE,   MGCP_EVT, 0,      0,
  TABLE_END
};
static DWORD ScriptPackage [] = 
{
  (DWORD)"ir",    SCRIPT_INTERMEDIATE_RESULTS,  MGCP_ALL, SIG_BR, 0,
  (DWORD)"java",  SCRIPT_JAVA,                  MGCP_SIG, SIG_TO, 0,
  (DWORD)"oc",    SCRIPT_OPERATION_COMPLETE,    MGCP_EVT, 0,      0,
  (DWORD)"of",    SCRIPT_OPERATION_FAILURE,     MGCP_EVT, 0,      0,
  (DWORD)"perl",  SCRIPT_PERL,                  MGCP_SIG, SIG_TO, 0,
  (DWORD)"tcl",   SCRIPT_TCL,                   MGCP_SIG, SIG_TO, 0,
  (DWORD)"vxml",  SCRIPT_VXML,                  MGCP_SIG, SIG_TO, 0,
  (DWORD)"xml",   SCRIPT_XML,                   MGCP_SIG, SIG_TO, 0,
  TABLE_END
};

/* PakcageName / Package ID/ PackageTable / PackageVersion */
#define MGCP_PKG_TABLE_OFFSET 4
static DWORD MGCPPackageTable[] = 
{
  (DWORD)"*",      MGCP_PKG_ANY,                    (DWORD)0, 0,
  (DWORD)"L",      MGCP_PKG_LINE,                   (DWORD)LinePackage, 1,
  (DWORD)"G",      MGCP_PKG_GENERIC_MEDIA,          (DWORD)GenericMediaPackage, 1,
  (DWORD)"D",      MGCP_PKG_DTMF,                   (DWORD)DTMFPackage, 1,
  (DWORD)"T",      MGCP_PKG_TRUNK,                  (DWORD)TrunkPackage, 1,
  (DWORD)"H",      MGCP_PKG_HANDSET_EMULATION,      (DWORD)HandsetEmulationPackage, 1,
  (DWORD)"SST",    MGCP_PKG_SERVICES_TONE,          (DWORD)ServicesTonePackage, 1,
  (DWORD)"DM1",    MGCP_PKG_DIGIT_MAP_EXTENSION,    (DWORD)DigitMapExtensionPackage, 1,
  (DWORD)"SL",     MGCP_PKG_SIGNAL_LIST,            (DWORD)SignalListPackage, 1,
  (DWORD)"FM",     MGCP_PKG_MEDIA_FORMAT_PARAMETER, (DWORD)MediaFormatPackage, 1,
  (DWORD)"R",      MGCP_PKG_RTP,                    (DWORD)RTPPackage, 1,
  (DWORD)"RES",    MGCP_PKG_RESOURCE_RESERVATION,   (DWORD)ResourceReservationPackage, 1,
  (DWORD)"A",      MGCP_PKG_ANNOUNCEMENT_SERVER,    (DWORD)AnnouncementServerPackage, 1,
  (DWORD)"SCRIPT", MGCP_PKG_SCRIPT,                 (DWORD)ScriptPackage, 1,
  TABLE_END
};

/******************************************************************************
 * Function          : FindMgcpPackageByName
 *
 * Description       : Find the mgcp package by name and return
 *
 * Input parameters  : pcPackageName - Mgcp package name to be search
 *
 * Output parameters : pPackage - The target mgcp package found
 *
 * Return value      : Return OK if the mgcp package is found successfully,
 *                     otherwise return FAIL.
 *
 * Comments          : 
 *
 * History           :
 *  2005/08/05       : Creation
 *
 * Date              : Aug 05 2005, Frank Zhang
 ******************************************************************************/
LONG FindMgcpPackageByName(MGCP_PACKAGE *pPackage, char *pcPackageName)
{
  DWORD *pPkgTableEntry = MGCPPackageTable;  

  Assert(pPackage);
  Assert(pcPackageName);
  

  while (*pPkgTableEntry != TABLE_END)
  {
    if (StrCaseCmp(pcPackageName, (char*)pPkgTableEntry[0]) == 0)
    {
      strcpy(pPackage->Name, (char*)pPkgTableEntry[0]);
      pPackage->ePackageType = (E_MGCP_PACKAGE)pPkgTableEntry[1];
      pPackage->pEventTable = (DWORD*)pPkgTableEntry[2];
      pPackage->dwPackageVersion = pPkgTableEntry[3];
      return OK;
    }
    
    pPkgTableEntry += MGCP_PKG_TABLE_OFFSET;
  }

  pPackage->ePackageType = MGCP_PKG_UNDEFINED;
  pPackage->pEventTable = NULL;
  pPackage->dwPackageVersion = 0;

  return FAIL;
}
/******************************************************************************
 * Function          : FindMgcpPackageByID
 *
 * Description       : Find the mgcp package by ID and return
 *
 * Input parameters  : PackageID - Mgcp package ID to be search
 *
 * Output parameters : pPackage - The target mgcp package found
 *
 * Return value      : Return OK if the mgcp package is found successfully,
 *                     otherwise return FAIL.
 *
 * Comments          : 
 *
 * History           :
 *  2005/08/05       : Creation
 *
 * Date              : Aug 05 2005, Frank Zhang
 ******************************************************************************/
LONG FindMgcpPackageByID(MGCP_PACKAGE *pPackage, E_MGCP_PACKAGE PackageID)
{
  DWORD *pPkgTableEntry = MGCPPackageTable;  

  Assert(pPackage);

  if (PackageID != MGCP_PKG_ANY && PackageID != MGCP_PKG_UNDEFINED)
  {
    while (*pPkgTableEntry != TABLE_END)
    {
      if (PackageID == pPkgTableEntry[1])
      {
        strcpy(pPackage->Name, (char*)pPkgTableEntry[0]);
        pPackage->ePackageType = (E_MGCP_PACKAGE)pPkgTableEntry[1];
        pPackage->pEventTable = (DWORD*)pPkgTableEntry[2];
        pPackage->dwPackageVersion = pPkgTableEntry[3];
        return OK;
      }
      
      pPkgTableEntry += MGCP_PKG_TABLE_OFFSET;
    }
  }

  pPackage->ePackageType = MGCP_PKG_UNDEFINED;
  pPackage->pEventTable = NULL;
  pPackage->dwPackageVersion = 0;

  return FAIL;
}
/******************************************************************************
 * Function          : FindMgcpPkgEventByName
 *
 * Description       : Find the mgcp event by name and return
 *
 * Input parameters  : pcEventName - Mgcp event name to be search
 *                     ePackageType - Mgcp event package type to be search
 *
 * Output parameters : MGCP_PKG_EVENT - The target mgcp event found
 *
 * Return value      : Return OK if the mgcp event is found successfully,
 *                     otherwise return FAIL.
 *
 * Comments          : 
 *
 * History           :
 *  2005/08/05       : Creation
 *
 * Date              : Aug 05 2005, Frank Zhang
 ******************************************************************************/
LONG FindMgcpPkgEventByName(MGCP_PKG_EVENT *pEvent, char *pcEventName,
                            E_MGCP_PACKAGE ePackageType)
{
  MGCP_PACKAGE Package;
  DWORD *pEventTableEntry;
  
  Assert(pEvent);
  Assert(pcEventName);
  
  memset(&Package, 0, sizeof(MGCP_PACKAGE));

  /* Find the package event table */
  if (FindMgcpPackageByID(&Package, ePackageType) != OK)
    return FAIL;

  pEventTableEntry = Package.pEventTable;
  if (pEventTableEntry != NULL)
  {
    while (*pEventTableEntry != TABLE_END)
    {
      if (StrCaseCmp(pcEventName, (char*)pEventTableEntry[0]) == 0)
      {
        strcpy(pEvent->Name, (char*)pEventTableEntry[0]);
        pEvent->eEventID = (E_MGCP_EVENT)pEventTableEntry[1];
        pEvent->eEventType = (E_MGCP_EVENT_TYPE)pEventTableEntry[2];
        pEvent->eSigType = (E_MGCP_SIGNAL_TYPE)pEventTableEntry[3];
        pEvent->dwSigDuration = pEventTableEntry[4];
        return OK;
      }
      
      pEventTableEntry += MGCP_EVENT_TABLE_OFFSET;
    }
  }
  
  return FAIL;
}
/******************************************************************************
 * Function          : FindMgcpPkgEventByID
 *
 * Description       : Find the mgcp event by ID and return
 *
 * Input parameters  : eEventID - Mgcp event ID to be search
 *                     ePackageType - Mgcp event package type to be search
 *
 * Output parameters : MGCP_PKG_EVENT - The target mgcp event found
 *
 * Return value      : Return OK if the mgcp event is found successfully,
 *                     otherwise return FAIL.
 *
 * Comments          : 
 *
 * History           :
 *  2005/08/05       : Creation
 *
 * Date              : Aug 05 2005, Frank Zhang
 ******************************************************************************/
LONG FindMgcpPkgEventByID(MGCP_PKG_EVENT *pEvent, E_MGCP_EVENT eEventID,
                          E_MGCP_PACKAGE ePackageType)
{
  MGCP_PACKAGE Package;
  DWORD *pEventTableEntry;
  
  Assert(pEvent);

  memset(&Package, 0, sizeof(MGCP_PACKAGE));
  /* Find the package event table */
  if (FindMgcpPackageByID(&Package, ePackageType) != OK)
    return FAIL;

  /* Check if is "ALL" event*/
  if (eEventID == MGCP_EVT_ALL)
  {
    strcpy(pEvent->Name, "all");
    return OK;
  }

  pEventTableEntry = Package.pEventTable;
  Assert(pEventTableEntry);
  
  if (pEventTableEntry != NULL)
  {
    while (*pEventTableEntry != TABLE_END)
    {
      if (eEventID == pEventTableEntry[1])
      {
        strcpy(pEvent->Name, (char*)pEventTableEntry[0]);
        pEvent->eEventID = (E_MGCP_EVENT)pEventTableEntry[1];
        pEvent->eEventType = (E_MGCP_EVENT_TYPE)pEventTableEntry[2];
        pEvent->eSigType = (E_MGCP_SIGNAL_TYPE)pEventTableEntry[3];
        pEvent->dwSigDuration = pEventTableEntry[4];
        return OK;
      }
      
      pEventTableEntry += MGCP_EVENT_TABLE_OFFSET;
    }
  }
  
  return FAIL;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -