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

📄 mgcppackage.c

📁 mgcp协议源代码和测试程序,还有一个编译器
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
  Copyright(C) 2005,2006 Frank ZHANG

  All Rights Reserved.
    
  This program is free software; you can redistribute it and/or modify it under
   the terms of the GNU General Public License as published by the Free
  Software Foundation; either version 2 of the License, or (at your option)
  any later version.

  This program is distributed in the hope that it will be useful, but WITHOUT
  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 
  more details.
    
  You should have received a copy of the GNU General Public License along with
  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  Place, Suite 330, Boston, MA 02111-1307 USA.
 
 ******************************************************************************
*      Authors                   :  Frank ZHANG (openmgcp@gmail.com)
*      Description               :  
*
*
*      Date of creation          :  08/02/2005
*
*
*      History                   :
*      2005/08/02 Frank ZHANG    : - Creation
******************************************************************************/
#include <string.h>

#include "typedef.h"
#include "debg.h"
#include "misc.h"

#include "mgcppackage.h"

#define MGCP_EVENT_TABLE_OFFSET 5
static DWORD LinePackage[] = 
{ 
  /* Name           Event_ID                       EvtType  SigType  Duration */
  (DWORD)"adsi", L_ADSI_DISPLAY,                   MGCP_SIG, SIG_BR, 0,
  (DWORD)"aw",   L_ANSWER_TONE,                    MGCP_ALL, SIG_OO, 0,
  (DWORD)"bz",   L_BUSY_TONE,                      MGCP_SIG, SIG_TO, 30000,
  (DWORD)"ci",   L_CALLER_ID,                      MGCP_SIG, SIG_BR, 0,
  (DWORD)"dl",   L_DIAL_TONE,                      MGCP_SIG, SIG_TO, 16000,
  (DWORD)"e",    L_ERROR_TONE,                     MGCP_ALL, SIG_TO, 2000,
  (DWORD)"hd",   L_OFF_HOOK_TRANSITION,            MGCP_EVT, 0,  0,
  (DWORD)"hf",   L_FLASH_HOOK,                     MGCP_EVT, 0,  0,
  (DWORD)"ht",   L_ON_HOLD_TONE,                   MGCP_SIG, SIG_OO, 0,
  (DWORD)"hu",   L_ON_HOOK_TRANSITION,             MGCP_EVT, 0,  0,
  (DWORD)"lsa",  L_LINE_SIDE_ANSWER_SUP,           MGCP_SIG, SIG_OO, 0,
  (DWORD)"mwi",  L_MESSAGE_WAITING_IND,            MGCP_SIG, SIG_TO, 16000,
  (DWORD)"nbz",  L_NETWORK_BUSY,                   MGCP_ALL, SIG_TO, SIG_INFI,
  (DWORD)"oc",   L_OPERATION_COMPLETE,             MGCP_EVT, 0,  0,
  (DWORD)"of",   L_OPERATION_FAILURE,              MGCP_EVT, 0,  0,
  (DWORD)"osi",  L_NETWORK_DISCONNECT,             MGCP_SIG, SIG_TO, 900,
  (DWORD)"ot",   L_OFF_HOOK_WARNING_TONE,          MGCP_SIG, SIG_TO, SIG_INFI,
  (DWORD)"p",    L_PROMPT_TONE,                    MGCP_ALL, SIG_BR, 0,
  (DWORD)"rg",   L_RINGING,                        MGCP_SIG, SIG_TO, 180000,
  (DWORD)"r0",   L_DISTINCTIVE_RINGING,            MGCP_SIG, SIG_TO, 180000,
  (DWORD)"r1",   L_DISTINCTIVE_RINGING,            MGCP_SIG, SIG_TO, 180000,
  (DWORD)"r2",   L_DISTINCTIVE_RINGING,            MGCP_SIG, SIG_TO, 180000,
  (DWORD)"r3",   L_DISTINCTIVE_RINGING,            MGCP_SIG, SIG_TO, 180000,
  (DWORD)"r4",   L_DISTINCTIVE_RINGING,            MGCP_SIG, SIG_TO, 180000,
  (DWORD)"r5",   L_DISTINCTIVE_RINGING,            MGCP_SIG, SIG_TO, 180000,
  (DWORD)"r6",   L_DISTINCTIVE_RINGING,            MGCP_SIG, SIG_TO, 180000,
  (DWORD)"r7",   L_DISTINCTIVE_RINGING,            MGCP_SIG, SIG_TO, 180000,
  (DWORD)"ro",   L_REORDER_TONE,                   MGCP_SIG, SIG_TO, 30000,
  (DWORD)"rs",   L_RING_SPLASH,                    MGCP_SIG, SIG_BR, 0,
  (DWORD)"s",    L_DISTINCTIVE_TONE_PATTERN,       MGCP_ALL, SIG_BR, 0,
  (DWORD)"sit",  L_SPECIAL_INFORMATION_TONE,       MGCP_SIG, SIG_TO, 2000,
  (DWORD)"sl",   L_STUTTER_DIAL_TONE,              MGCP_SIG, SIG_TO, 16000,
  (DWORD)"v",    L_ALERTING_TONE,                  MGCP_SIG, SIG_OO, 0,
  (DWORD)"vmwi", L_VISUAL_MSG_WAITING_INDICATOR,   MGCP_SIG, SIG_OO, 0,
  (DWORD)"wt",   L_CALL_WAITING_TONE,              MGCP_SIG, SIG_TO, 12000,
  (DWORD)"wt1",  L_ALTERNATIVE_CALL_WAITING_TONES, MGCP_SIG, SIG_TO, 12000,
  (DWORD)"wt2",  L_ALTERNATIVE_CALL_WAITING_TONES, MGCP_SIG, SIG_TO, 12000,
  (DWORD)"wt3",  L_ALTERNATIVE_CALL_WAITING_TONES, MGCP_SIG, SIG_TO, 12000,
  (DWORD)"wt4",  L_ALTERNATIVE_CALL_WAITING_TONES, MGCP_SIG, SIG_TO, 12000,
  (DWORD)"y",    L_RECORDER_WARNING_TONE,          MGCP_SIG, SIG_TO, SIG_INFI,
  (DWORD)"z",    L_CALLING_CARD_SERVICE_TONE,      MGCP_SIG, SIG_BR, 0,
  TABLE_END                                                  
};

static DWORD GenericMediaPackage[] = 
{
  (DWORD)"cf",   G_CONFIRM_TONE,               MGCP_SIG, SIG_BR, 0,  
  (DWORD)"cg",   G_CONGESTION_TONE,            MGCP_SIG, SIG_TO, SIG_INFI,
  (DWORD)"ft",   G_FAX_TONE,                   MGCP_EVT, 0,  0,
  (DWORD)"it",   G_INTERCEPT_TONE,             MGCP_SIG, SIG_TO, SIG_INFI,
  (DWORD)"ld",   G_LONG_DURATION_CONNECTION,   MGCP_EVT, 0,  0,
  (DWORD)"mt",   G_MODEM_TONE,                 MGCP_EVT, 0,  0,
  (DWORD)"oc",   G_OPERATION_COMPLETE,         MGCP_EVT, 0,  0,
  (DWORD)"of",   G_OPERATION_FAILURE,          MGCP_EVT, 0,  0,
  (DWORD)"pat",  G_PATTERN_DETECTED,           MGCP_ALL, SIG_OO, 0,
  (DWORD)"pt",   G_PREEMPTION_TONE,            MGCP_SIG, SIG_TO, SIG_INFI,
  (DWORD)"rbk",  G_RINGBACK,                   MGCP_SIG, SIG_TO, 180000,
  (DWORD)"rt",   G_RINGBACK_TONE,              MGCP_SIG, SIG_TO, 180000,
  TABLE_END
};

static DWORD DTMFPackage[] = 
{
  (DWORD)"0",    D_DTMF_0,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"1",    D_DTMF_1,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"2",    D_DTMF_2,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"3",    D_DTMF_3,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"4",    D_DTMF_4,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"5",    D_DTMF_5,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"6",    D_DTMF_6,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"7",    D_DTMF_7,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"8",    D_DTMF_8,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"9",    D_DTMF_9,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"#",    D_DTMF_POUND,                 MGCP_ALL, SIG_BR, 0,  
  (DWORD)"*",    D_DTMF_ASTERISK,              MGCP_ALL, SIG_BR, 0,  
  (DWORD)"A",    D_DTMF_A,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"B",    D_DTMF_B,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"C",    D_DTMF_C,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"D",    D_DTMF_D,                     MGCP_ALL, SIG_BR, 0,  
  (DWORD)"DD",   D_TONE_DURATION,              MGCP_ALL, SIG_TO, 3000, 
  (DWORD)"DO",   D_OO_SIGNAL,                  MGCP_SIG, SIG_OO, 0, 
  (DWORD)"L",    D_LONG_DURATION_INDICATOR,    MGCP_EVT, 0,  0, 
  (DWORD)"oc",   D_OPERATION_COMPLETE,         MGCP_EVT, 0,  0, 
  (DWORD)"of",   D_OPERATION_FAILURE,          MGCP_EVT, 0,  0, 
  (DWORD)"T",    D_INTERDIGIT_TIMER,           MGCP_ALL, SIG_TO, 16000, 
  (DWORD)"X",    D_DTMF_WILDCARD,              MGCP_EVT, 0,  0, 
  TABLE_END
};

static DWORD TrunkPackage[] = 
{
  (DWORD)"as",   T_ANSWER_SUPERVISION,         MGCP_ALL, SIG_BR, 0,
  (DWORD)"bl",   T_BLOCKING,                   MGCP_SIG, SIG_BR, 0,
  (DWORD)"bz",   T_BUSY,                       MGCP_SIG, SIG_TO, 30000,
  (DWORD)"co1",  T_CONTINUITY_TONE,            MGCP_ALL, SIG_TO, 3000,
  (DWORD)"co2",  T_CONTINUITY_TEST,            MGCP_ALL, SIG_TO, 3000,
  (DWORD)"ct",   T_CONTINUITY_TRANSPONDER,     MGCP_SIG, SIG_OO, 0,
  (DWORD)"lb",   T_LOOPBACK,                   MGCP_SIG, SIG_OO, 0,
  (DWORD)"nm",   T_NEW_MILLIWATT_TONE,         MGCP_ALL, SIG_TO, 3000,
  (DWORD)"mm",   T_NEWEST_MILLIWATT_TONE,      MGCP_ALL, SIG_TO, 3000,
  (DWORD)"oc",   T_OPERATION_COMPLETE,         MGCP_EVT, 0,  0,
  (DWORD)"of",   T_OPERATION_FAILURE,          MGCP_EVT, 0,  0,
  (DWORD)"om",   T_OLD_MILLIWATT_TONE,         MGCP_ALL, SIG_TO, 3000,
  (DWORD)"pst",  T_PERMANENT_SIGNAL_TONE,      MGCP_SIG, SIG_TO, SIG_INFI,
  (DWORD)"qt",   T_QUIET_TERMINATION,          MGCP_SIG, SIG_TO, SIG_INFI,
  (DWORD)"ro",   T_REORDER_TONE,               MGCP_ALL, SIG_TO, 30000,
  (DWORD)"sit",  T_SPECIAL_INFORMATION_TONE,   MGCP_ALL, SIG_TO, 2000,
  (DWORD)"tl",   T_TEST_LINE,                  MGCP_SIG, SIG_TO, SIG_INFI,
  (DWORD)"tp",   T_TEST_PATTERN,               MGCP_ALL, SIG_TO, 3000,
  (DWORD)"zz",   T_NO_CIRCUIT,                 MGCP_ALL, SIG_TO, 2000,
  TABLE_END
};

static DWORD HandsetEmulationPackage[] = 
{
  (DWORD)"adsi", H_ADSI_DISPLAY,               MGCP_ALL, SIG_BR, 0,
  (DWORD)"aw",   H_ANSWER_TONE,                MGCP_ALL, SIG_OO, 0,
  (DWORD)"bz",   H_BUSY_TONE,                  MGCP_ALL, SIG_TO, 30000,
  (DWORD)"ci",   H_CALLER_ID,                  MGCP_ALL, SIG_BR, 0,
  (DWORD)"dl",   H_DIAL_TONE,                  MGCP_ALL, SIG_TO, 16000,
  (DWORD)"e",    H_ERROR_TONE,                 MGCP_ALL, SIG_TO, 2000,
  (DWORD)"hd",   H_OFF_HOOK_TRANSITION,        MGCP_ALL, SIG_BR, 0,
  (DWORD)"hu",   H_ON_HOOK_TRANSITION,         MGCP_ALL, SIG_BR, 0,
  (DWORD)"hf",   H_FLASH_HOOK,                 MGCP_ALL, SIG_BR, 0,
  (DWORD)"ht",   H_TONE_ON_HOLD,               MGCP_ALL, SIG_OO, 0,
  (DWORD)"lsa",  H_LINE_SIDE_ANSWER_SUP,       MGCP_ALL, SIG_OO, 0,
  (DWORD)"mwi",  H_MESSAGE_WAITING_IND,        MGCP_ALL, SIG_TO, 16000,
  (DWORD)"nbz",  H_NETWORK_BUSY,               MGCP_ALL, SIG_TO, SIG_INFI,
  (DWORD)"oc",   H_OPERATION_COMPLETE,         MGCP_EVT, 0,      0,
  (DWORD)"ot",   H_OFF_HOOK_WARNING_TONE,      MGCP_ALL, SIG_TO, SIG_INFI,  
  (DWORD)"of",   H_OPERATION_FAILURE,          MGCP_EVT, 0,      0,
  (DWORD)"osi",  H_NETWORK_DISCONNECT,         MGCP_ALL, SIG_TO, 900,
  (DWORD)"p",    H_PROMPT_TONE,                MGCP_ALL, SIG_BR, 0,
  (DWORD)"rg",   H_RINGING,                    MGCP_ALL, SIG_TO, 180000,
  (DWORD)"r0",   H_DISTINCTIVE_RINGING,        MGCP_ALL, SIG_TO, 180000,
  (DWORD)"r1",   H_DISTINCTIVE_RINGING,        MGCP_ALL, SIG_TO, 180000,
  (DWORD)"r2",   H_DISTINCTIVE_RINGING,        MGCP_ALL, SIG_TO, 180000,
  (DWORD)"r3",   H_DISTINCTIVE_RINGING,        MGCP_ALL, SIG_TO, 180000,
  (DWORD)"r4",   H_DISTINCTIVE_RINGING,        MGCP_ALL, SIG_TO, 180000,
  (DWORD)"r5",   H_DISTINCTIVE_RINGING,        MGCP_ALL, SIG_TO, 180000,
  (DWORD)"r6",   H_DISTINCTIVE_RINGING,        MGCP_ALL, SIG_TO, 180000,
  (DWORD)"r7",   H_DISTINCTIVE_RINGING,        MGCP_ALL, SIG_TO, 180000, 
  (DWORD)"ro",   H_REORDER_TONE,               MGCP_ALL, SIG_TO, 30000,
  (DWORD)"rs",   H_RINGSPLASH,                 MGCP_ALL, SIG_BR, 0,
  (DWORD)"s",    H_DISTINCTIVE_TONE_PATTERN,   MGCP_ALL, SIG_BR, 0,
  (DWORD)"sit",  H_SIT_TONE,                   MGCP_ALL, SIG_TO, 2000,
  (DWORD)"sl",   H_STUTTER_DIAL_TONE,          MGCP_ALL, SIG_TO, 16000,
  (DWORD)"v",    H_ALERTING_TONE,              MGCP_ALL, SIG_OO, 0,
  (DWORD)"vm",   H_VISAL_MESSAGE_WAITING,      MGCP_ALL, SIG_OO, 0,
  (DWORD)"wt",   H_CALL_WAITING_TONE,          MGCP_ALL, SIG_TO, 12000,
  (DWORD)"wt1",  H_CALL_WAITING_TONE,          MGCP_ALL, SIG_TO, 12000, 
  (DWORD)"wt2",  H_CALL_WAITING_TONE,          MGCP_ALL, SIG_TO, 12000, 
  (DWORD)"wt3",  H_CALL_WAITING_TONE,          MGCP_ALL, SIG_TO, 12000,    
  (DWORD)"wt4",  H_CALL_WAITING_TONE,          MGCP_ALL, SIG_TO, 12000, 
  (DWORD)"y",    H_RECORDER_WARNING_TONE,      MGCP_ALL, SIG_TO, SIG_INFI,
  (DWORD)"z",    H_CALLING_CARD_SERVICE_TONE,  MGCP_ALL, SIG_BR, 0,
  TABLE_END
};

static DWORD ServicesTonePackage[] = 
{
  (DWORD)"cd",   SST_CONFERENCE_DEPART,    MGCP_SIG, SIG_BR, 0,
  (DWORD)"cj",   SST_CONFERENCE_JOIN,      MGCP_SIG, SIG_BR, 0,
  (DWORD)"cm",   SST_COMFORT_TONE,         MGCP_SIG, SIG_TO, SIG_INFI,
  (DWORD)"cw",   SST_CALLER_WAITING_TONE,  MGCP_SIG, SIG_TO, 30000,
  (DWORD)"ht",   SST_ON_HOLD_TONE,         MGCP_SIG, SIG_OO, 0,
  (DWORD)"ni",   SST_NEGATIVE_INDICATION,  MGCP_SIG, SIG_TO, SIG_INFI,
  (DWORD)"nu",   SST_NUMBER_UNOBTAINABLE,  MGCP_SIG, SIG_TO, SIG_INFI,
  (DWORD)"oc",   SST_OPERATION_COMPLETE,   MGCP_EVT, 0,      0,
  (DWORD)"of",   SST_OPERATION_FAILURE,    MGCP_EVT, 0,      0,
  (DWORD)"pr",   SST_PAY_HONE_RECOGNITION, MGCP_SIG, SIG_BR, 0,
  (DWORD)"pt",   SST_PAY_TONE,             MGCP_SIG, SIG_BR, 0,
  TABLE_END
};

DWORD DigitMapExtensionPackage[] = 
{
  TABLE_END
};


static DWORD SignalListPackage [] = 
{
  (DWORD)"oc",   SL_OPERATION_COMPLETE,   MGCP_EVT, 0,  0,
  (DWORD)"of",   SL_OPERATION_FAILURE,    MGCP_EVT, 0,  0,
  (DWORD)"s",    SL_SIGNAL_LIST,          MGCP_SIG, SIG_TO, 0,
  TABLE_END
};

static DWORD MediaFormatPackage [] = 
{
  TABLE_END
};

static DWORD RTPPackage [] = 
{
  (DWORD)"co1",  R_CONTINUITY_TONE,       MGCP_ALL, SIG_TO, 3000,
  (DWORD)"co2",  R_CONTINUITY_TEST,       MGCP_ALL, SIG_TO, 3000,
  (DWORD)"iu",   R_ICMP_UNREACHABLE,      MGCP_EVT, 0,  0,
  (DWORD)"ji",   R_JITTER_BUFFER_CHANGED, MGCP_EVT, 0,  0,
  (DWORD)"ma",   R_MEDIA_START,           MGCP_EVT, 0,  0,
  (DWORD)"oc",   R_OPERATION_COMPLETE,    MGCP_EVT, 0,  0,
  (DWORD)"of",   R_OPERATION_FAILURE,     MGCP_EVT, 0,  0,
  (DWORD)"pl",   R_PACKET_LOSS_EXCEEDED,  MGCP_EVT, 0,  0,
  (DWORD)"qa",   R_QUALITY_ALERT,         MGCP_EVT, 0,  0,
  (DWORD)"rto",  R_RTP_TIMEOUT,           MGCP_EVT, 0,  0,
  (DWORD)"sr",   R_SAMPLING_RATE_CHANGED, MGCP_EVT, 0,  0,
  (DWORD)"uc",   R_USED_CODEC_CHANGED,    MGCP_EVT, 0,  0,
  TABLE_END
};

static DWORD ResourceReservationPackage [] = 
{
  (DWORD)"re",  RES_ERROR, MGCP_EVT, 0, 0,
  (DWORD)"rl",  RES_LOST,  MGCP_EVT, 0, 0,
  TABLE_END

⌨️ 快捷键说明

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