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