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

📄 mgcpdef.h

📁 mgcp协议源代码和测试程序,还有一个编译器
💻 H
📖 第 1 页 / 共 3 页
字号:
/******************************************************************************
  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               :  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 "posix.h"
#include "typedef.h"
#include "list.h"
#include "mgcppackage.h"

#ifdef __cplusplus
extern "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 5
typedef 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 0x7FFF
typedef 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
{
  char *pcPackageName;    /* "*" = any package */
  E_EVENT_ID eType;
  char *pcEventIDName;  
  char *pcConnectionId;   /* "$" = Any; "*" = All */
} EVENT_NAME;

typedef struct
{

⌨️ 快捷键说明

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