📄 mgcpdef.h
字号:
/****************************************************************************** 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. ****************************************************************************** If you want to distribute this software with modifications under any terms other than the GPL or distribute the software linked with proprietary applications that are not distributed in full compliance with the GNU Public License, a Commercial License is needed. Commercial licensing and support of this software are available at a fee. For more information, See http://www.openmgcp.org ******************************************************************************//******************************************************************************* Authors : Frank ZHANG* Description : MGCP message sturcture definition.*** Date of creation : 08/23/2005*** History :* 2005/08/23 Frank ZHANG : - Creation******************************************************************************/#ifndef __MGCP_DEF_H__#define __MGCP_DEF_H__#include "typedef.h"#include "list.h"#include "mgcppackage.h"#ifdef __cplusplusextern "C" {#endif/****************************************************************************** * Response code category ******************************************************************************//* Response acknowledgement */#define RSP_ACK_MIN 0#define RSP_ACK_MAX 99/* Provisional response */#define RSP_PROVISIONAL_MIN 100#define RSP_PROVISIONAL_MAX 199/* Successful completion of command */#define RSP_SUCCEED_MIN 200#define RSP_SUCCEED_MAX 299/* transient error */#define RSP_TRANS_ERROR_MIN 400#define RSP_TRANS_ERROR_MAX 499/* permanent error */#define RSP_PERMA_ERROR_MIN 500#define RSP_PERMA_ERROR_MAX 599#define RSP_TRANSACTION_IN_PROGRESS 100#define RSP_TRANSACTION_QUEUED 101#define RSP_TRANSACTION_SUCCEED 200#define RSP_CONNECTION_DELETED 250#define RSP_UNSPECIFIED_TRANSIENT_ERROR 400#define RSP_PHONE_OFF_HOOK 401#define RSP_PHONE_ON_HOOK 402#define RSP_INSUFFICIENT_RESOURCES 403#define RSP_INSUFFICIENT_BANDWIDTH 404#define RSP_ENDPOINT_IS_RESTARTING 405#define RSP_TRANSACTION_TIMEOUT 406#define RSP_TRANSACTION_ABORTED 407#define RSP_INTERNAL_OVERLOAD 409#define RSP_ENDPOINT_UNAVAILABLE 410#define RSP_ENDPOINT_UNKNOWN 500#define RSP_ENDPOINT_OUT_OF_SERVICE 501#define RSP_INSUFFICIENT_RESOURCES_PERMANENT 502#define RSP_WILDCARD_TOO_COMPLICATED 503#define RSP_UNSUPPORTED_COMMAND 504#define RSP_UNSUPPORTED_CONNEC_DESCRIPTOR 505#define RSP_UNSATISFIED_CONNECTION_OPTION 506#define RSP_UNSUPPORTED_FUNCTIONALITY 507#define RSP_UNSUPPORTED_QUARANTINE_HANDLING 508#define RSP_ERROR_REMOTECONNECDESCRIPTOR 509#define RSP_PROTOCOL_ERROR 510#define RSP_UNRECOGNIZED_PARAMETER_EXTENSION 511#define RSP_UNEQUIPPED_DETECT_EVENTS 512#define RSP_UNEQUIPPED_GENERATE_SIGNALS 513#define RSP_UNSUPPORTED_ANNOUNCEMENT 514#define RSP_INCORRECT_CONNECTION_ID 515#define RSP_UNKNOWN_CALL_ID 516#define RSP_INVALID_MODE 517#define RSP_UNSUPPORTED_PACKAGE 518#define RSP_DIGIT_MAP_IS_NULL 519#define RSP_REDIRECT_CA 521#define RSP_NO_SUCH_EVENT_SIGNAL 522#define RSP_UNKNOWN_OR_ILLEGAL_COMBIN_ACTIONS 523#define RSP_INCONSISTENCY_LOCAL_CONNEC_OPTIONS 524#define RSP_UNKNOWN_CONNEC_OPTIONS_EXTENSION 525#define RSP_INSUFFICIENT_BANDWIDTH_PERMANENT 526#define RSP_MISSING_REMOTE_CONNEC_DESCRIPTOR 527#define RSP_INCOMPATIBLE_PROTOCOL_VERSION 528#define RSP_INTERNAL_HARDWARE_ERROR 529#define RSP_CAS_SIGNALING_ERROR 530#define RSP_FAILURE_GROUPING_TRUNKS 531#define RSP_UNSUPPORTED_LOCAL_CONNEC_OPT_VALUE 532#define RSP_RESPONSE_TOO_LARGE 533#define RSP_CODEC_NEGOTIATION_FAILURE 534#define RSP_UNSUPPORTED_PACKETIZATION_PERIOD 535#define RSP_UNKNOWN_RESTART_METHOD 536#define RSP_UNKNOWN_DIGIT_MAP_EXTENSION 537#define RSP_EVENT_SIGNAL_PARAMETER_ERROR 538#define RSP_UNSUPPORTED_COMMAND_PARAMETER 539#define RSP_REACH_ENDPOINT_CONNECTION_LIMIT 540#define RSP_UNSUPPORTED_LOCAL_CONNEC_OPTIONS 541/* Max size of MGCP datagram in bytes that can be received by the endpoint, MGCP mandates that implementations MUST support MGCP datagrams up to at least 4000 bytes */#define MAX_MGCP_DATAGRAM 4000#define MGCP_CRCX_CMD_MAN_NUMBER 2 /* CRCX command mandaroty parameter number */#define MGCP_MDCX_CMD_MAN_NUMBER 2 /* MDCX command mandaroty parameter number */#define MGCP_RQNT_CMD_MAN_NUMBER 1 /* RQNF command mandaroty parameter number */#define MGCP_NTFY_CMD_MAN_NUMBER 2 /* NTFY command mandaroty parameter number */#define MGCP_AUCX_CMD_MAN_NUMBER 2 /* AUCX command mandaroty parameter number */#define MGCP_RSTP_CMD_MAN_NUMBER 1 /* RSIP command mandaroty parameter number *//****************************************************************************** * SDP structure and function definition ******************************************************************************//* Multicast address structure */typedef struct{ char *pcIPv4address; char *pcTTL; char *pcInteger;} MULTICAST_ADDRESS;typedef enum{ ADDRESS_MULTICAST = 1, /* Multicast address */ ADDRESS_IPV4, ADDRESS_IPV6, ADDRESS_FQDN} E_ADDRESS_TYPE;/* Connection address structure */typedef struct{ E_ADDRESS_TYPE eType; char *pcAddress;} CONNECTION_ADDRESS;/* Connection field structure */typedef struct{ char *pcNetType; /* Network type */ char *pcAddrType; /* Address type */ CONNECTION_ADDRESS ConnectionAddress; /* Address of the connection */} CONNECTION_FIELD;typedef enum{ MEDIA_PROTOCOL_RTP = 1, MEDIA_PROTOCOL_UDP, MEDIA_PROTOCOL_OTHER} E_MEDIA_PROTOCOL;/* Media protocol structure */typedef struct{ E_MEDIA_PROTOCOL eType; char *pcOtherProtocol;} MEDIA_PROTOCOL;/* Media field structure */typedef struct{ char *pcMedia; /* Media name, such as "audio","video","data" */ char *pcPort; /* Media port, should in the range "1024" to "65535" * inclusive for UDP based media */ char *pcInteger; MEDIA_PROTOCOL Protocol; /* Media protocol type, such as "RTP","UDP" */ WORD wNum; char **ppcFormat; /* typically an RTP payload type for audio and video media */} MEDIA_FIELD;/* Attribue field structure */typedef struct{ char *pcAttibuteName; char *pcAttibuteValue;} ATTRIBUTE_FIELD;/* Media description structure */typedef struct{ MEDIA_FIELD MediaField; WORD wNum; ATTRIBUTE_FIELD *pAttributeFields;} MEDIA_DESCRIPTIONS;/* SDP structure */typedef struct{ CONNECTION_FIELD *pConnectionField; WORD wAttributeNum; ATTRIBUTE_FIELD *pAttributeFields; WORD wMediaNum; MEDIA_DESCRIPTIONS *pMediaDesc;} SDP_ANNOUNCEMENT, CONNECTION_DESCRIPTOR;/***************************************************************************** * MGCP parameter lines defination * *****************************************************************************/typedef struct{ DWORD dwTranIDStart; DWORD dwTranIDEnd;} TRANSACTION_ID_RANGE;typedef struct{ WORD wNum; TRANSACTION_ID_RANGE *pTranIdRange;} RESPONSE_ACK;typedef enum{ BEARER_ENCODE_A_LAW = 1, BEARER_ENCODE_U_LAW, BEARER_ENCODE_EXTENSION} E_BEARER;typedef struct{ char *pcExtenPackageName; char *pcBearerExtenName; char *pcBearerExtenValue;} BEARER_EXTENSION;typedef struct{ E_BEARER eBearerEncodingType; BEARER_EXTENSION pBearerExtension;} BEARER_ATTRIBUTE;typedef struct{ WORD wNum; BEARER_ATTRIBUTE *pBearerAttributes;} BEARER_INFO;typedef struct{ WORD wNum; char **ppcConnectionIDList;} CONNECTION_IDS;typedef enum{ NE_IP_ADDRESS = 1, /* The domain name is dot-decimal address foramat */ NE_STRING, /* The domain name is string */ NE_EMPTY /* The NE is empty value */} E_NE_TYPE;#define MAX_IP_ADDRESS 5typedef struct { char *pcLocalName; /* Local name part, maybe NULL */ char *pcDomainName; /* Domain name part */ WORD wPort; /* UDP port number */ /* Only useful when send commands, to indicate the * destination address of the command */ WORD wAddrNum; WORD wCurAddrIndex; DWORD pIPAddrList[MAX_IP_ADDRESS];} NOTIFIED_ENTITY;typedef struct{ WORD wMinValue; WORD wMaxValue;} PACKETIZATION_PERIOD;typedef struct{ WORD wNum; char **ppcAlgorithmList;} COMPRESSION_ALGORITHM;typedef struct{ WORD wMinValue; WORD wMaxValue;} BANDWIDTH;typedef enum{ OO_UNDEFINED, OO_ON, OO_OFF} E_ON_OFF;typedef enum{ RSVP_UNDEFINED, RSVP_CONTROLLED_LOAD, RSVP_GUARANTEED_SERVICE, RSVP_BEST_EFFORT} E_RESOURCE_RESERVATION;typedef enum{ NETWOR_UNDEFINED, NETWOR_INTERNET, NETWOR_ATM, NETWOR_LOCAL} E_NETWOR_TYPE;typedef enum{ ENCRY_CLEAR = 1, ENCRY_BASE64, ENCRY_URI, ENCRY_PROMPT} E_ENCRY_TYPE;typedef struct{ E_ENCRY_TYPE eType; char *pEncryKey;} ENCRYPTION_DATA;typedef enum{ LOCAL_EXT_VENDOR_MAN = 1, LOCAL_EXT_VENDOR_OPT, LOCAL_EXT_PACKAGE, LOCAL_EXT_OTHER} E_LOCAL_EXTENSION;typedef struct{ E_LOCAL_EXTENSION eType; char *pcPackageName; char *pcExtensionName; char *pcExtensionValue;} LOCAL_OPTION_EXTENSION;#define AUTO_GAIN_CONTROL 0x7FFFtypedef struct{ WORD wOptNum; /* The valid option numbers in this structure */ PACKETIZATION_PERIOD *pPacketizationPeriod; COMPRESSION_ALGORITHM *pCompressAlgo; BANDWIDTH *pBandwidthValue; SHORT *psGainControl; E_ON_OFF *peEchocancellation; E_ON_OFF *peSilenceSuppression; BYTE *pucTypeOfService; E_RESOURCE_RESERVATION *peResourceReservation; E_NETWOR_TYPE *peTypeOfNetwork; ENCRYPTION_DATA *pEncryData; LOCAL_OPTION_EXTENSION *pLocalOptExtension;} LOCAL_CONNEC_OPTS;typedef enum{ CONNECTION_MODE_SENDONLY = 1, CONNECTION_MODE_RECEIVEONLY, CONNECTION_MODE_SENDRECEIVE, CONNECTION_MODE_CONFERENCE, CONNECTION_MODE_INACTIVE, CONNECTION_MODE_LOOPBACK, CONNECTION_MODE_CONTINUITY, CONNECTION_MODE_NET_CONTINUITY, CONNECTION_MODE_NET_LOOP, CONNECTION_MODE_EXTENSION_MODE} E_CONNECTION_MODE;typedef struct{ char *pcExtenPackageName; char *pcExtenModeName;} EXTENSION_CONNECTION_MODE;typedef struct{ E_CONNECTION_MODE eMode; EXTENSION_CONNECTION_MODE *pExtenMode;} CONNECTION_MODE;typedef enum{ EVENT_ID = 1, /* EventId */ EVENT_ALL, /* "All" */ EVENT_DTMF_ASTERISK, /* "*" */ EVENT_DTMF_POUND, /* "#" */ EVENT_RANGE /* [abcd-1234567890] */} E_EVENT_ID;typedef struct{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -