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

📄 voip_parse.c

📁 telcobridges voip develop
💻 C
📖 第 1 页 / 共 5 页
字号:
 *------------------------------------------------------------------------------------------------------------------------------*/

TBX_RESULT VoipParseClockConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParsePromptConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseRawDataFileConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseBertConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseTrunkConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseMblConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp0TdmToneConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp0TdmAgcConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp0TdmVadConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp0StreamConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp0StreamToneConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp0StreamAgcConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp0StreamJitterParamsConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp1TdmToneConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp1TdmAgcConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp1TdmVadConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp1TdmEchoConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp1StreamConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp1StreamToneConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp1StreamJitterParamsConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp1StreamRtcpConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseVpGrp1StreamT38ConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseConnectConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index,
	IN		TBX_BOOL				in_fDemo);

TBX_RESULT VoipParseDisconnectConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseStressConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParsePauseConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);

TBX_RESULT VoipParseTitleConfigurationLine(
	IN		PVOIP_ADAPTER_CONTEXT	pAdapterContext,
	IN		const PTBX_CHAR			in_pszLine,
	IN		const PTBX_CHAR			in_pszOriginalLine,
	IN		TBX_UINT32				in_un32Line,
	IN		TBX_UINT32				in_un32Index);


/*--------------------------------------------------------------------------------------------------------------------------------
 |  Implementation
 *------------------------------------------------------------------------------------------------------------------------------*/

/*-------------------------------------------------------------------------------------------------------------------------------
 |
 |  VoipParseAndLoadConfiguration	:	This function parses the configuration file, validates its content and load the
 |										configuration value into our local structure.  It does not allocate any resources nor
 |										configure anything.  This is done dynamically afterwards.
 |
 |  ~								:	No parameters
 |
 |  Note							:	~
 |
 |  Return							:	TBX_RESULT_OK if the configuration file has been properly loaded.
 |										Other error code if the configuration file could not be loaded.
 |
 *------------------------------------------------------------------------------------------------------------------------------*/
TBX_RESULT VoipParseAndLoadConfiguration()
{
	TBX_RESULT				Result;
	PVOIP_CLI_CONTEXT		pCliContext;
	FILE *					pFileIn;
	TBX_CHAR				szLine [VOIP_MAX_CONFIGURATION_LINE_LENGTH];
	TBX_UINT32				un32Line;
	VOIP_PARSING_TOKEN		Token;
	PTBX_CHAR				pszLine;
	PTBX_CHAR				pszToken;
	PTBX_CHAR				pszArgument;
	VOIP_PARSING_GROUP		Group;
	VOIP_PARSING_GROUP		SubGroup;
	PVOIP_CONFIG			pConfig;
	PVOIP_ADAPTER_CONTEXT	pAdapterContext;

	/*---------------------------------------------------------------------------------------------------------------------------
	 |  Code section
	 *--------------------------------------------------------------------------------------------------------------------------*/
	CODE
	{
		/* Initialize local variables */
		Result			= TBX_RESULT_OK;
		pCliContext		= &g_pContext->CliContext;
		pAdapterContext = NULL;
		pFileIn			= NULL;
		Group			= VOIP_PARSING_GROUP_UNKNOWN;
		SubGroup		= VOIP_PARSING_GROUP_UNKNOWN;
		pConfig			= &g_pContext->TempConfig;

		/* Prepare default values */
		pConfig->TraceLevelStdout			= 0;
		pConfig->TraceLevelLogFile			= 0;
		pConfig->un32MinRefresh					= 0;
		pConfig->un32NetworkDownDelayMs			= VOIP_DEFAULT_NETWORK_DOWN_DELAY_MS;
		pConfig->un32AdapterDownDelayMs			= VOIP_DEFAULT_ADAPTER_DOWN_DELAY_MS;
		pConfig->un32PollDelayMs				= VOIP_DEFAULT_POLL_DELAY_MS;
		pConfig->fShowTrunkResMapDisplay		= TBX_FALSE;
		pConfig->fShowPacketTypeGraphDisplay	= TBX_FALSE;
		pConfig->fShowTrunkInfoDisplay			= TBX_FALSE;
		pConfig->fShowPromptInfoDisplay			= TBX_FALSE;
		pConfig->fShowRawDataFileInfoDisplay	= TBX_FALSE;
		pConfig->fShowBertInfoDisplay			= TBX_FALSE;
		pConfig->fShowConnectionInfoDisplay		= TBX_FALSE;

		/* Try to open the configuration file in text mode */
		pFileIn = fopen (g_pContext->szConfigFileName, "r");
		if (pFileIn == NULL)
		{
			TBX_EXIT_ERROR(TBX_RESULT_NOT_FOUND, 0, "Unable to open configuration file");
		}

		/* Parse every line */
		un32Line = 0;
		while (!feof (pFileIn))
		{
			/* Read one line from the configuration file */
			un32Line++;
			szLine[0] = '\0';
			pszLine = fgets (szLine, sizeof(szLine),pFileIn);

			TbxStringRemoveBlanks( szLine );

			/* Have we reached the end-of-file ? */
			if (pszLine == NULL)
			{
				continue;
			}
			VoipRemoveTabs (pszLine);

			/* Convert to caps */
			VoipToUpper (pszLine);

			/* Parse the token */
			VoipParseToken (pszLine, &Token, &pszToken, &pszArgument);

			/* Decide what to do with this token */
			switch (Token)
			{
			/* Comment processing */
			case VOIP_PARSING_TOKEN_COMMENT:
				/* Go to next line */
				break;

			/* Param group start flag processing */
			case VOIP_PARSING_TOKEN_PARAMS_GROUP_START:
				if (Group == VOIP_PARSING_GROUP_UNKNOWN)
				{
					Group = VOIP_PARSING_GROUP_PARAMS;
				}
				else
				{
					VOIP_PARSE_ERROR_DISPLAY (un32Line, (pszToken-pszLine), pszLine, "Unexpected .PARAMS group start");
					TBX_EXIT_SUCCESS(TBX_RESULT_FAIL);
				}
				break;

			/* Streamserver group start flag processing */
			case VOIP_PARSING_TOKEN_STREAM_SERVER_GROUP_START:
				if (Group == VOIP_PARSING_GROUP_UNKNOWN)
				{
					Group = VOIP_PARSING_GROUP_STREAM_SERVER;
				}
				else
				{
					VOIP_PARSE_ERROR_DISPLAY (un32Line, (pszToken-pszLine), pszLine, "Unexpected .STREAMSERVER group start");
					TBX_EXIT_SUCCESS(TBX_RESULT_FAIL);
				}
				break;

			/* Adapter group start flag processing */
			case VOIP_PARSING_TOKEN_ADAPTER_GROUP_START:
				if (Group == VOIP_PARSING_GROUP_UNKNOWN)
				{
					Group = VOIP_PARSING_GROUP_ADAPTER;

					/* Add adapter context to temporary pool of adapters */
					Result = VoipAdapterAdd(
						g_pContext->hTempPoolOfAdapters,
						pszArgument,
						&pAdapterContext);
					if (TBX_RESULT_FAILURE(Result) == TBX_TRUE)
					{
						VOIP_PARSE_ERROR_DISPLAY (un32Line, (pszToken-pszLine), pszLine, "Unable to create adapter context");
						TBX_EXIT_SUCCESS(TBX_RESULT_FAIL);
					}

					/* Allocate the "adapter target configuration" context */
					VoipAdapterAllocConfig( pAdapterContext->pTargetConfig );
				}
				else
				{
					VOIP_PARSE_ERROR_DISPLAY (un32Line, (pszToken-pszLine), pszLine, "Unexpected .ADAPTER group start");
					TBX_EXIT_SUCCESS(TBX_RESULT_FAIL);
				}
				break;

			/* Prompt group start flag processing */
			case VOIP_PARSING_TOKEN_PROMPT_GROUP_START:
				if ((Group == VOIP_PARSING_GROUP_ADAPTER) && (SubGroup == VOIP_PARSING_GROUP_UNKNOWN))
				{
					SubGroup = VOIP_PARSING_GROUP_PROMPT;
				}
				else
				{
					VOIP_PARSE_ERROR_DISPLAY (un32Line, (pszToken-pszLine), pszLine, "Unexpected .PROMPT group start");
					TBX_EXIT_SUCCESS(TBX_RESULT_FAIL);

⌨️ 快捷键说明

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