📄 mgcppackage.c
字号:
/******************************************************************************
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 + -