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

📄 voip_parse.h

📁 telcobridges voip develop
💻 H
字号:
/*--------------------------------------------------------------------------------------------------------------------------------
 |
 |	Project:    	VOIP sample
 |
 |	Filename:   	voip_parse.h
 |
 |	Copyright:  	TelcoBridges 2002-2004, All Rights Reserved
 |
 |	Description:	This file contains definitions to use during configuration file parsing.
 |
 |	Notes:      	Tabs = 4
 |
 *-------------------------------------------------------------------------------------------------------------------------------
 |
 |	Revision:   	$Revision: 1.23 $
 |
 *------------------------------------------------------------------------------------------------------------------------------*/


/*--------------------------------------------------------------------------------------------------------------------------------
 |  Define header file
 *------------------------------------------------------------------------------------------------------------------------------*/
#ifndef __VOIP_PARSE_H__
#define __VOIP_PARSE_H__


/*--------------------------------------------------------------------------------------------------------------------------------
 |  C++ support
 *------------------------------------------------------------------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */


/*--------------------------------------------------------------------------------------------------------------------------------
 |  Forward declarations
 *------------------------------------------------------------------------------------------------------------------------------*/


/*--------------------------------------------------------------------------------------------------------------------------------
 |  Defines
 *------------------------------------------------------------------------------------------------------------------------------*/

#define VOIP_PARSING_DELIMITERS				" \t\n\r"
#define VOIP_LINE_PARSING_DELIMITERS		", \t\n\r"
#define VOIP_MAX_CONFIGURATION_LINE_LENGTH	512


/*--------------------------------------------------------------------------------------------------------------------------------
 |  Types
 *------------------------------------------------------------------------------------------------------------------------------*/

/* This enumeration describes the different types of group that can be found from the configuration file or command string */
typedef enum _VOIP_PARSING_GROUP
{
	VOIP_PARSING_GROUP_PARAMS			= 0,
	VOIP_PARSING_GROUP_STREAM_SERVER	= 1,
	VOIP_PARSING_GROUP_PROMPT			= 2,
	VOIP_PARSING_GROUP_ADAPTER			= 3,
	VOIP_PARSING_GROUP_BERT				= 4,
	VOIP_PARSING_GROUP_CLOCK			= 5,
	VOIP_PARSING_GROUP_TRUNK			= 6,
	VOIP_PARSING_GROUP_MBL				= 7,
	VOIP_PARSING_GROUP_VP				= 8,
	VOIP_PARSING_GROUP_CONNECTION		= 9,
	VOIP_PARSING_GROUP_STRESS			= 10,
	VOIP_PARSING_GROUP_DEMO				= 11,
	VOIP_PARSING_GROUP_RAW_DATA_FILE	= 12,
	VOIP_PARSING_GROUP_UNKNOWN			= 13

} VOIP_PARSING_GROUP, *PVOIP_PARSING_GROUP;

/* The following enumeration describes the different types of token that can be read from the configuration file or command string */
typedef enum _VOIP_PARSING_TOKEN
{
	VOIP_PARSING_TOKEN_COMMENT												= 0,
	VOIP_PARSING_TOKEN_PARAMS_GROUP_START									= 1,
	VOIP_PARSING_TOKEN_STREAM_SERVER_GROUP_START							= 2,
	VOIP_PARSING_TOKEN_PROMPT_GROUP_START									= 3,
	VOIP_PARSING_TOKEN_ADAPTER_GROUP_START									= 4,
	VOIP_PARSING_TOKEN_BERT_GROUP_START										= 5,
	VOIP_PARSING_TOKEN_CLOCK_GROUP_START									= 6,
	VOIP_PARSING_TOKEN_TRUNK_GROUP_START									= 7,
	VOIP_PARSING_TOKEN_MBL_GROUP_START										= 8,
	VOIP_PARSING_TOKEN_VP_GROUP_START										= 9,
	VOIP_PARSING_TOKEN_CONNECTION_GROUP_START								= 10,
	VOIP_PARSING_TOKEN_STRESS_GROUP_START									= 11,
	VOIP_PARSING_TOKEN_DEMO_GROUP_START										= 12,
	VOIP_PARSING_TOKEN_GROUP_END											= 13,
	VOIP_PARSING_TOKEN_LOG_FILENAME											= 14,
	VOIP_PARSING_TOKEN_LOG_FILE_LEVEL										= 15,
	VOIP_PARSING_TOKEN_LOG_DISPLAY_LEVEL									= 16,
	VOIP_PARSING_TOKEN_MIN_REFRESH											= 17,
	VOIP_PARSING_TOKEN_SHOW_CONNECTION_INFO_DISPLAY							= 18,
	VOIP_PARSING_TOKEN_SHOW_STREAM_INFO_DISPLAY								= 19,
	VOIP_PARSING_TOKEN_SHOW_TRUNK_INFO_DISPLAY								= 20,
	VOIP_PARSING_TOKEN_SHOW_PROMPT_INFO_DISPLAY								= 21,
	VOIP_PARSING_TOKEN_SHOW_RAW_DATA_FILE_INFO_DISPLAY						= 22,
	VOIP_PARSING_TOKEN_SHOW_BERT_INFO_DISPLAY								= 23,
	VOIP_PARSING_TOKEN_SHOW_TRUNK_RES_MAP_DISPLAY							= 24,
	VOIP_PARSING_TOKEN_SHOW_TRUNK_RES_INV_MAP_DISPLAY						= 25,
	VOIP_PARSING_TOKEN_SHOW_PACKET_TYPE_GRAPH_DISPLAY						= 26,
	VOIP_PARSING_TOKEN_SHOW_TRUNK_RES_MAP_AND_PACKET_TYPE_GRAPH_DISPLAY		= 27,
	VOIP_PARSING_TOKEN_SHOW_TRUNK_RES_INV_MAP_AND_PACKET_TYPE_GRAPH_DISPLAY	= 28,
	VOIP_PARSING_TOKEN_INTERFACE_IP											= 29,
	VOIP_PARSING_TOKEN_GATEWAY_PORT											= 30,
	VOIP_PARSING_TOKEN_NETWORK_DOWN_DELAY_MS								= 31,
	VOIP_PARSING_TOKEN_ADAPTER_DOWN_DELAY_MS								= 32,
	VOIP_PARSING_TOKEN_POLL_DELAY_MS										= 33,
	VOIP_PARSING_TOKEN_STREAM_SERVER_IP										= 34,
	VOIP_PARSING_TOKEN_PROMPT_CONFIG										= 35,
	VOIP_PARSING_TOKEN_BERT_CONFIG											= 36,
	VOIP_PARSING_TOKEN_CLOCK_CONFIG											= 37,
	VOIP_PARSING_TOKEN_TRUNK_CONFIG											= 38,
	VOIP_PARSING_TOKEN_MBL_CONFIG											= 39,
	VOIP_PARSING_TOKEN_VP_GRP0_TDM_TONE_CONFIG								= 40,
	VOIP_PARSING_TOKEN_VP_GRP0_TDM_AGC_CONFIG								= 41,
	VOIP_PARSING_TOKEN_VP_GRP0_TDM_VAD_CONFIG								= 42,
	VOIP_PARSING_TOKEN_VP_GRP0_STREAM_CONFIG								= 43,
	VOIP_PARSING_TOKEN_VP_GRP0_STREAM_TONE_CONFIG							= 44,
	VOIP_PARSING_TOKEN_VP_GRP0_STREAM_AGC_CONFIG							= 45,
	VOIP_PARSING_TOKEN_VP_GRP0_STREAM_JITTER_PARAMS_CONFIG					= 46,
	VOIP_PARSING_TOKEN_VP_GRP1_TDM_TONE_CONFIG								= 47,
	VOIP_PARSING_TOKEN_VP_GRP1_TDM_AGC_CONFIG								= 48,
	VOIP_PARSING_TOKEN_VP_GRP1_TDM_VAD_CONFIG								= 49,
	VOIP_PARSING_TOKEN_VP_GRP1_TDM_ECHO_CONFIG								= 50,
	VOIP_PARSING_TOKEN_VP_GRP1_STREAM_CONFIG								= 51,
	VOIP_PARSING_TOKEN_VP_GRP1_STREAM_TONE_CONFIG							= 52,
	VOIP_PARSING_TOKEN_VP_GRP1_STREAM_JITTER_PARAMS_CONFIG					= 53,
	VOIP_PARSING_TOKEN_VP_GRP1_STREAM_RTCP_CONFIG							= 54,
	VOIP_PARSING_TOKEN_VP_GRP1_STREAM_T38_CONFIG							= 55,
	VOIP_PARSING_TOKEN_CONNECT												= 56,
	VOIP_PARSING_TOKEN_DISCONNECT											= 57,
	VOIP_PARSING_TOKEN_STRESS_IP											= 58,
	VOIP_PARSING_TOKEN_STRESS_CONFIG										= 59,
	VOIP_PARSING_TOKEN_PAUSE												= 60,
	VOIP_PARSING_TOKEN_TITLE												= 61,
	VOIP_PARSING_TOKEN_RAW_DATA_FILE_GROUP_START							= 62,
	VOIP_PARSING_TOKEN_RAW_DATA_FILE_CONFIG									= 63,

	VOIP_PARSING_TOKEN_UNKNOWN												= 64

} VOIP_PARSING_TOKEN, *PVOIP_PARSING_TOKEN;

/* The following type is used to match a string to a parsing token */
typedef struct _VOIP_PARSING_ENTRY
{
	PTBX_CHAR	pszIdentifier;
	TBX_UINT32	un32Value;

} VOIP_PARSING_ENTRY, *PVOIP_PARSING_ENTRY;


/*--------------------------------------------------------------------------------------------------------------------------------
 |  Global variables
 *------------------------------------------------------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------------------------------------------------------
 |  Macros
 *------------------------------------------------------------------------------------------------------------------------------*/

#define VOIP_PARSE_ERROR_DISPLAY(__Line__,__Index__,__pOriginalString__,__pErrorDescriptionString__)		\
{																											\
	TBX_UINT32			un32Count;																			\
	TBX_CHAR			szPrintLine [VOIP_MAX_CONFIGURATION_LINE_LENGTH];									\
																											\
	TbxCliToolsLogPrint( pCliContext->hCliTools, TRACE_LEVEL_ERROR, NULL, "Error in configuration file '%s' at line %d\n", g_pContext->szConfigFileName, (__Line__));	\
	TbxCliToolsLogPrint( pCliContext->hCliTools, TRACE_LEVEL_ERROR, NULL, "\t%s\n", (__pOriginalString__));	\
	szPrintLine [0] = '\t';																					\
	for (un32Count=0; un32Count<(TBX_UINT32)(__Index__);un32Count++)										\
	{																										\
		szPrintLine [un32Count+1] = ' ';																	\
	}																										\
	szPrintLine [un32Count+1] = 0;																			\
	sprintf (&(szPrintLine [un32Count+1]), "^ %s\n", (__pErrorDescriptionString__));						\
	TbxCliToolsLogPrint( pCliContext->hCliTools, TRACE_LEVEL_ERROR, NULL, szPrintLine);						\
}

#define VOIP_PARSE_GET_PARAMETER( __TYPE__ ,__pun32Value__, __fExitOnError__)									\
{																												\
	TBX_CHAR	szErrorString[ 256 ];																			\
	strcpy( szErrorString, #__TYPE__ ": Invalid value, expecting " );											\
	*(__pun32Value__) = (TBX_UINT32)-1;																			\
	VoipCompareEntriesBuildErrString (pArg, (g_aParse_ ##__TYPE__), (PTBX_UINT32)(__pun32Value__), &un32SizeOfEntry, szErrorString);	\
	if ( ((__fExitOnError__) == TBX_TRUE) && ((TBX_UINT32)-1 == *(__pun32Value__)) )							\
	{																											\
		VOIP_PARSE_ERROR_DISPLAY (in_un32Line, (pArg-szLine+in_un32Index), in_pszOriginalLine, szErrorString);	\
		TBX_EXIT_SUCCESS(TBX_RESULT_FAIL);																		\
	}																											\
}

#define VOIP_PARSE_GET_TRUNK_PARAMETER(__variable__,__E1_TYPE__,__T1_TYPE__,__J1_TYPE__)			\
{																									\
	if (pTrunkConfig->TrunkCfg.Type == TB640_TRUNK_TYPE_E1)											\
	{																								\
		/* Get the E1 framing type */																\
		VOIP_PARSE_GET_PARAMETER (__E1_TYPE__, &(pTrunkConfig->TrunkCfg.Cfg.E1.__variable__), TBX_TRUE);	\
	}																								\
	else if (pTrunkConfig->TrunkCfg.Type == TB640_TRUNK_TYPE_T1)									\
	{																								\
		/* Get the T1 framing type */																\
		VOIP_PARSE_GET_PARAMETER (__T1_TYPE__, &(pTrunkConfig->TrunkCfg.Cfg.T1.__variable__), TBX_TRUE);	\
	}																								\
	else																							\
	{																								\
		/* Get the J1 framing type */																\
		VOIP_PARSE_GET_PARAMETER (__J1_TYPE__, &(pTrunkConfig->TrunkCfg.Cfg.J1.__variable__), TBX_TRUE);	\
	}																								\
}


/*--------------------------------------------------------------------------------------------------------------------------------
 |  Function Prototypes
 *------------------------------------------------------------------------------------------------------------------------------*/


/*--------------------------------------------------------------------------------------------------------------------------------
 |  C++ support
 *------------------------------------------------------------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif /* __cplusplus */

#endif /* __VOIP_PARSE_H__ */

⌨️ 快捷键说明

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