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

📄 voip_cli_cmd.c

📁 telcobridges voip develop
💻 C
📖 第 1 页 / 共 5 页
字号:
	IN OUT	PTBX_CLI_TOOLS_CMD	io_pCmdContext )
{
	PTBX_CHAR	pszUserInput = io_pCmdContext->paszUserInput[ io_pCmdContext->un32CurrentPromptIdx ].szLine;

	/* Make uppercase */
	ToUpper( pszUserInput );

	switch( io_pCmdContext->un32CurrentPromptIdx )
	{
		case 0:	/* Validate skip pauses */
		{
			if( !VoipCliIsValidBoolValue( pszUserInput ) )
			{
				/* Restore a valid value */
				sprintf( pszUserInput, "%s", (g_DefaultPrompts.StartDemo.fSkipPauses == TBX_TRUE) ? "YES":"NO" );
				return TBX_FALSE;
			}

		} break;

		case 1:	/* Validate automatically abort demo on failure indication */
		{
			if( !VoipCliIsValidBoolValue( pszUserInput ) )
			{
				/* Restore a valid value */
				sprintf( pszUserInput, "%s", (g_DefaultPrompts.StartDemo.fAutoAbort == TBX_TRUE) ? "YES":"NO" );
				return TBX_FALSE;
			}

		} break;
	}

	return TBX_TRUE;
}

TBX_VOID VoipCliCmdStartDemoApply(
	IN OUT	PTBX_CLI_TOOLS_CMD	io_pCmdContext )
{
	TBX_RESULT			Result;
	PVOIP_CLI_CONTEXT	pCliContext = &g_pContext->CliContext;
	TBX_BOOL			fSkipPauses;
	TBX_BOOL			fAutoAbort;

	fSkipPauses = VoipCliStringToBool( io_pCmdContext->paszUserInput[ 0 ].szLine );
	fAutoAbort = VoipCliStringToBool( io_pCmdContext->paszUserInput[ 1 ].szLine );

	/* Save new default prompt values */
	g_DefaultPrompts.StartDemo.fSkipPauses = fSkipPauses;
	g_DefaultPrompts.StartDemo.fAutoAbort = fAutoAbort;

	Result = VoipCliSendStartDemo( pCliContext, fSkipPauses, fAutoAbort );
	if( TBX_RESULT_FAILURE( Result ) == TBX_TRUE )
	{
		TbxCliToolsLogPrint( pCliContext->hCliTools, TRACE_LEVEL_ERROR, NULL, "Failed to start demo!\n" );
	}

	/* No more input to take. Return to main menu input. */
	io_pCmdContext->CmdType = VOIP_CLI_CMD_TYPE_NONE;
}

/*-------------------------------------------------------------------------------------------------------------------------------
 |
 |  VoipCliCmdStopDemoInit		:	Prepare user prompts for the 'Stop demo' command
 |  VoipCliCmdStopDemoValidate	:	Validate each user's input (called once per prompt)
 |  VoipCliCmdStopDemoApply		:	Apply the command
 |
 |  in_pCmdContext				:	Context of the command-line.
 |
 |  Note						:	~
 |
 |  Return						:	TBX_RESULT_OK
 |									TBX_RESULT_FAIL
 |
 *------------------------------------------------------------------------------------------------------------------------------*/
TBX_VOID VoipCliCmdStopDemoInit(
	IN OUT	PTBX_CLI_TOOLS_CMD	io_pCmdContext )
{
	PVOIP_CLI_CONTEXT		pCliContext = &g_pContext->CliContext;
	PVOIP_ADAPTER_CONTEXT	pAdapterContext = pCliContext->pActiveAdapterContext;

	if( pAdapterContext->Demo.fActive == TBX_FALSE )
	{
		TbxCliToolsLogPrint(
			pCliContext->hCliTools, TRACE_LEVEL_ERROR, NULL,
			"Demo already stopped.\n" );
		return;
	}

	/* Start gathering input for 'launch demo' */
	io_pCmdContext->CmdType = VOIP_CLI_CMD_TYPE_STOP_DEMO;

	/* Set prompt command */
	strcpy( io_pCmdContext->paszPrompt[0].szLine, "Are you sure? " );

	/* Save new default prompt values */
	g_DefaultPrompts.StopDemo.fConfirm = TBX_FALSE;

	/* Set default user input value */
	sprintf( io_pCmdContext->paszUserInput[0].szLine, "%s", (g_DefaultPrompts.StopStressTest.fConfirm == TBX_TRUE) ? "YES":"NO" );
}

TBX_BOOL VoipCliCmdStopDemoValidate(
	IN OUT	PTBX_CLI_TOOLS_CMD	io_pCmdContext )
{
	PTBX_CHAR	pszUserInput = io_pCmdContext->paszUserInput[ io_pCmdContext->un32CurrentPromptIdx ].szLine;

	/* Make uppercase */
	ToUpper( pszUserInput );

	switch( io_pCmdContext->un32CurrentPromptIdx )
	{
		case 0:	/* Validate confirm state */
		{
			if( !VoipCliIsValidBoolValue( pszUserInput ) )
			{
				/* Restore a valid value */
				sprintf( pszUserInput, "%s", (g_DefaultPrompts.StopDemo.fConfirm == TBX_TRUE) ? "YES":"NO" );
				return TBX_FALSE;
			}

		} break;
	}

	return TBX_TRUE;
}

TBX_VOID VoipCliCmdStopDemoApply(
	IN OUT	PTBX_CLI_TOOLS_CMD	io_pCmdContext )
{
	TBX_RESULT				Result;
	PVOIP_CLI_CONTEXT		pCliContext = &g_pContext->CliContext;
	TBX_BOOL				fConfirm;

	fConfirm = VoipCliStringToBool( io_pCmdContext->paszUserInput[ 0 ].szLine );

	if( fConfirm == TBX_TRUE )
	{
		Result = VoipCliSendStopDemo( pCliContext );
		if( TBX_RESULT_FAILURE( Result ) == TBX_TRUE )
		{
			TbxCliToolsLogPrint( pCliContext->hCliTools, TRACE_LEVEL_ERROR, NULL, "Failed to stop demo!\n" );
		}
	}

	/* No more input to take. Return to main menu input. */
	io_pCmdContext->CmdType = VOIP_CLI_CMD_TYPE_NONE;
}

/*-------------------------------------------------------------------------------------------------------------------------------
 |
 |  VoipCliCmdNextDemoStepInit		:	Prepare user prompts for the 'Next demo step' command
 |  VoipCliCmdNextDemoStepValidate	:	Validate each user's input (called once per prompt)
 |  VoipCliCmdNextDemoStepApply		:	Apply the command
 |
 |  in_pCmdContext				:	Context of the command-line.
 |
 |  Note						:	~
 |
 |  Return						:	TBX_RESULT_OK
 |									TBX_RESULT_FAIL
 |
 *------------------------------------------------------------------------------------------------------------------------------*/
TBX_VOID VoipCliCmdNextDemoStepInit(
	IN OUT	PTBX_CLI_TOOLS_CMD	io_pCmdContext )
{
	PVOIP_CLI_CONTEXT		pCliContext = &g_pContext->CliContext;
	PVOIP_ADAPTER_CONTEXT	pAdapterContext = pCliContext->pActiveAdapterContext;

	if( pAdapterContext->Demo.fActive == TBX_FALSE )
	{
		TbxCliToolsLogPrint(
			pCliContext->hCliTools, TRACE_LEVEL_ERROR, NULL,
			"Demo is not active.\n" );
		return;
	}

	/* Start gathering input for 'launch demo' */
	io_pCmdContext->CmdType = VOIP_CLI_CMD_TYPE_NEXT_DEMO_STEP;

	/* Set prompt command */
	strcpy( io_pCmdContext->paszPrompt[0].szLine, "Are you sure? " );

	/* Save new default prompt values */
	g_DefaultPrompts.NextDemoStep.fConfirm = TBX_FALSE;

	/* Set default user input value */
	sprintf( io_pCmdContext->paszUserInput[0].szLine, "%s", (g_DefaultPrompts.NextDemoStep.fConfirm == TBX_TRUE) ? "YES":"NO" );
}

TBX_BOOL VoipCliCmdNextDemoStepValidate(
	IN OUT	PTBX_CLI_TOOLS_CMD	io_pCmdContext )
{
	PTBX_CHAR	pszUserInput = io_pCmdContext->paszUserInput[ io_pCmdContext->un32CurrentPromptIdx ].szLine;

	/* Make uppercase */
	ToUpper( pszUserInput );

	switch( io_pCmdContext->un32CurrentPromptIdx )
	{
		case 0:	/* Validate next demo step */
		{
			if( !VoipCliIsValidBoolValue( pszUserInput ) )
			{
				/* Restore a valid value */
				sprintf( pszUserInput, "%s", (g_DefaultPrompts.NextDemoStep.fConfirm == TBX_TRUE) ? "YES":"NO" );
				return TBX_FALSE;
			}

		} break;
	}

	return TBX_TRUE;
}

TBX_VOID VoipCliCmdNextDemoStepApply(
	IN OUT	PTBX_CLI_TOOLS_CMD	io_pCmdContext )
{
	TBX_RESULT				Result;
	PVOIP_CLI_CONTEXT		pCliContext = &g_pContext->CliContext;
	TBX_BOOL				fConfirm;

	fConfirm = VoipCliStringToBool( io_pCmdContext->paszUserInput[ 0 ].szLine );

	if( fConfirm == TBX_TRUE )
	{
		Result = VoipCliSendNextDemoStep( pCliContext );
		if( TBX_RESULT_FAILURE( Result ) == TBX_TRUE )
		{
			TbxCliToolsLogPrint( pCliContext->hCliTools, TRACE_LEVEL_ERROR, NULL, "Failed to change next demo step!\n" );
		}
	}

	/* No more input to take. Return to main menu input. */
	io_pCmdContext->CmdType = VOIP_CLI_CMD_TYPE_NONE;
}

/*-------------------------------------------------------------------------------------------------------------------------------
 |
 |  VoipCliCmdAllocateConnectionInit		:	Prepare user prompts for the 'Connect resources' command
 |  VoipCliCmdAllocateConnectionValidate	:	Validate each user's input (called once per prompt)
 |  VoipCliCmdAllocateConnectionApply		:	Apply the command
 |
 |  in_pCmdContext							:	Context of the command-line.
 |
 |  Note									:	~
 |
 |  Return									:	TBX_RESULT_OK
 |												TBX_RESULT_FAIL
 |
 *------------------------------------------------------------------------------------------------------------------------------*/
TBX_VOID VoipCliCmdAllocateConnectionInit(
	IN OUT	PTBX_CLI_TOOLS_CMD	io_pCmdContext )
{
	PVOIP_CLI_CONTEXT		pCliContext = &g_pContext->CliContext;
	PVOIP_ADAPTER_CONTEXT	pAdapterContext = pCliContext->pActiveAdapterContext;
	VOIP_RESOURCE_TYPE		FirstResType;
	VOIP_RESOURCE_TYPE		SecondResType;
	TBX_UINT32				un32PromptIdx = 0;

	if( pAdapterContext->StressTest.fActive == TBX_TRUE )
	{
		TbxCliToolsLogPrint(
			pCliContext->hCliTools, TRACE_LEVEL_ERROR, NULL,
			"Stress-test currently active.\n" );
		return;
	}

	/* Retrieve first resource class */
	FirstResType = VoipCliIntegerToFirstResType( g_DefaultPrompts.AllocateConnection.un32FirstResTypeIndex );

	/* Retrieve second resource class */
	SecondResType = VoipCliIntegerToSecondResType( g_DefaultPrompts.AllocateConnection.un32SecondResTypeIndex );

	/* Start gathering input for 'connect resources' */
	io_pCmdContext->CmdType = VOIP_CLI_CMD_TYPE_ALLOCATE_CONNECTION;

	/* Set prompt command */
	strcpy( io_pCmdContext->paszPrompt[0].szLine, "Enter number of connections: " );
	strcpy( io_pCmdContext->paszPrompt[1].szLine, "Enter first resource type (0=TRUNK, 1=MBL, 2=PROMPT, 3=BERT, 4=FILE): "  );
	strcpy( io_pCmdContext->paszPrompt[2].szLine, "Enter second resource type (0=TRUNK, 1=MBL, 2=STREAM SOCKET ): "  );
	switch( FirstResType )
	{
	case VOIP_RESOURCE_TYPE_TRUNK:
		strcpy( io_pCmdContext->paszPrompt[3].szLine, "Enter first res trunk number: " );
		strcpy( io_pCmdContext->paszPrompt[4].szLine, "Enter first res trunk timeslot: " );
		un32PromptIdx = 5;
		break;
	case VOIP_RESOURCE_TYPE_MBL_PORT:
		strcpy( io_pCmdContext->paszPrompt[3].szLine, "Enter first res MBL port number: " );
		strcpy( io_pCmdContext->paszPrompt[4].szLine, "Enter first res MBL stream number: " );
		strcpy( io_pCmdContext->paszPrompt[5].szLine, "Enter first res MBL timeslot number: " );
		un32PromptIdx = 6;
		break;
	case VOIP_RESOURCE_TYPE_PROMPT:
		strcpy( io_pCmdContext->paszPrompt[3].szLine, "Enter first res prompt name: " );
		un32PromptIdx = 4;
		break;
	case VOIP_RESOURCE_TYPE_RAW_DATA_FILE:
		strcpy( io_pCmdContext->paszPrompt[3].szLine, "Enter first res raw data file name: " );
		un32PromptIdx = 4;
		break;
	case VOIP_RESOURCE_TYPE_BERT:
		un32PromptIdx = 3;
		break;
	default:
		TbxCliToolsLogPrint(
			pCliContext->hCliTools, TRACE_LEVEL_ERROR, NULL,
			"Invalid first resource type.\n" );
		return;
	}
	switch( SecondResType )
	{
	case VOIP_RESOURCE_TYPE_TRUNK:
		strcpy( io_pCmdContext->paszPrompt[un32PromptIdx++].szLine, "Enter second res trunk number: " );
		strcpy( io_pCmdContext->paszPrompt[un32PromptIdx++].szLine, "Enter second res trunk timeslot: " );
		break;
	case VOIP_RESOURCE_TYPE_MBL_PORT:
		strcpy( io_pCmdContext->paszPrompt[un32PromptIdx++].szLine, "Enter second res MBL port number: " );
		strcpy( io_pCmdContext->paszPrompt[un32PromptIdx++].szLine, "Enter second res MBL stream number: " );
		strcpy( io_pCmdContext->paszPrompt[un32PromptIdx++].szLine, "Enter second res MBL timeslot number: " );
		break;
	case VOIP_RESOURCE_TYPE_STREAM_SOCKET:
		strcpy( io_pCmdContext->paszPrompt[un32PromptIdx++].szLine, "Enter second res Rx IP port: " );
		strcpy( io_pCmdContext->paszPrompt[un32PromptIdx++].szLine, "Enter second res Tx IP port: " );
		strcpy( io_pCmdContext->paszPrompt[un32PromptIdx++].szLine, "Enter second res IP port increment: " );
		strcpy( io_pCmdContext->paszPrompt[un32PromptIdx++].szLine, "Enter second res stream socket IP address: " );
		strcpy( io_pCmdContext->paszPrompt[un32PromptIdx++].szLine, "Enter second res stream packet type: " );
		strcpy( io_pCmdContext->paszPrompt[un32PromptIdx++].szLine, "Enter second res voice processing group type: " );
		break;
	default:
		TbxCliToolsLogPrint(
			pCliContext->hCliTools, TRACE_LEVEL_ERROR, NULL,
			"Invalid second resource type.\n" );
		return;
	}

	/* Erase unused prompt line */
	for( ; un32PromptIdx < VOIP_CLI_PROMPT_NB_LINES; un32PromptIdx++ )
	{
		io_pCmdContext->paszPrompt[un32PromptIdx].szLine[0] = '\0';
	}

	/* Set default user input value */
	sprintf( io_pCmdContext->paszUserInput[0].szLine, "%u", g_DefaultPrompts.AllocateConnection.un32NbConnections );
	sprintf( io_pCmdContext->paszUserInput[1].szLine, "%u", g_DefaultPrompts.AllocateConnection.un32FirstResTypeIndex );
	sprintf( io_pCmdContext->paszUserInput[2].szLine, "%u", g_DefaultPrompts.AllocateConnection.un32SecondResTypeIndex );
	switch( FirstResType )
	{
	case VOIP_RESOURCE_TYPE_TRUNK:
		sprintf( io_pCmdContext->paszUserInput[3].szLine, "%u", (unsigned int)g_DefaultPrompts.AllocateConnection.un32FirstResTrunkNb  );
		sprintf( io_pCmdContext->paszUserInput[4].szLine, "%u", (unsigned int)g_DefaultPrompts.AllocateConnection.un32FirstResTimeSlot );
		un32PromptIdx = 5;
		break;
	case VOIP_RESOURCE_TYPE_MBL_PORT:
		sprintf( io_pCmdContext->paszUserInput[3].szLine, "%u", (unsigned int)g_DefaultPrompts.AllocateConnection.un32FirstResMblPortNb );
		sprintf( io_pCmdContext->paszUserInput[4].szLine, "%u", (unsigned int)g_DefaultPrompts.AllocateConnection.un32FirstResMblStreamNb );
		sprintf( io_pCmdContext->paszUserInput[5].szLine, "%u", (unsigned int)g_DefaultPrompts.AllocateConnection.un32FirstResMblTimeSlot );
		un32PromptIdx = 6;
		break;
	case VOIP_RESOURCE_TYPE_PROMPT:
		sprintf( io_pCmdContext->paszUserInput[3].szLine, "%s", g_DefaultPrompts.AllocateConnection.szFirstResPromptName );
		un32PromptIdx = 4;
		break;
	case VOIP_RESOURCE_TYPE_RAW_DATA_FILE:
		sprintf( io_pCmdContext->paszUserInput[3].szLine, "%s", g_DefaultPrompts.AllocateConnection.szFirstResRawDataFileName );
		un32PromptIdx = 4;
		break;
	case VOIP_RESOURCE_TYPE_BERT:
		un32PromptIdx = 3;
		break;
	default:
		TbxCliToolsLogPrint(
			pCliContext->hCliTools, TRACE_LEVEL_ERROR, NULL,
			"Invalid first resource type.\n" );
		return;
	}
	switch( SecondResType )
	{
	case VOIP_RESOURCE_TYPE_TRUNK:
		sprintf( io_pCmdContext->paszUserInput[un32PromptIdx++].szLine, "%u", (unsigned int)g_DefaultPrompts.AllocateConnection.un32SecondResTrunkNb  );
		sprintf( io_pCmdContext->paszUserInput[un32PromptIdx++].szLine, "%u", (unsigned int)g_DefaultPrompts.AllocateConnection.un32SecondResTimeSlot );
		break;

⌨️ 快捷键说明

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