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

📄 voip_cli.c

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

				case VOIP_CLI_CMD_TYPE_NONE:
					break;
			}
		}

		/* BERT information display */
		else if( pCliContext->aDisplay[pCliContext->un32DisplayIndex] == VOIP_CLI_DISPLAY_TYPE_BERT_INFO )
		{
			/* Apply the user input */
			switch( io_pCmdInput->CmdType )
			{
				case VOIP_CLI_CMD_TYPE_QUIT:
					VoipCliCmdQuitApply( io_pCmdInput );
					break;

				case VOIP_CLI_CMD_TYPE_NEXT_DEMO_STEP:
					VoipCliCmdNextDemoStepApply( io_pCmdInput );
					break;

				case VOIP_CLI_CMD_TYPE_NONE:
					break;
			}
		}

		/* Map of trunk resource status display */
		else if( pCliContext->aDisplay[pCliContext->un32DisplayIndex] == VOIP_CLI_DISPLAY_TYPE_TRUNK_RES_MAP )
		{
			/* Apply the user input */
			switch( io_pCmdInput->CmdType )
			{
				case VOIP_CLI_CMD_TYPE_QUIT:
					VoipCliCmdQuitApply( io_pCmdInput );
					break;

				case VOIP_CLI_CMD_TYPE_NEXT_DEMO_STEP:
					VoipCliCmdNextDemoStepApply( io_pCmdInput );
					break;

				case VOIP_CLI_CMD_TYPE_NONE:
					break;
			}
		}

		/* Inverted map of trunk resource status display */
		else if( pCliContext->aDisplay[pCliContext->un32DisplayIndex] == VOIP_CLI_DISPLAY_TYPE_TRUNK_RES_INV_MAP )
		{
			/* Apply the user input */
			switch( io_pCmdInput->CmdType )
			{
				case VOIP_CLI_CMD_TYPE_QUIT:
					VoipCliCmdQuitApply( io_pCmdInput );
					break;

				case VOIP_CLI_CMD_TYPE_NEXT_DEMO_STEP:
					VoipCliCmdNextDemoStepApply( io_pCmdInput );
					break;

				case VOIP_CLI_CMD_TYPE_NONE:
					break;
			}
		}

		/* Graph of packet type status display */
		else if( pCliContext->aDisplay[pCliContext->un32DisplayIndex] == VOIP_CLI_DISPLAY_TYPE_PACKET_TYPE_GRAPH )
		{
			/* Apply the user input */
			switch( io_pCmdInput->CmdType )
			{
				case VOIP_CLI_CMD_TYPE_QUIT:
					VoipCliCmdQuitApply( io_pCmdInput );
					break;

				case VOIP_CLI_CMD_TYPE_NEXT_DEMO_STEP:
					VoipCliCmdNextDemoStepApply( io_pCmdInput );
					break;

				case VOIP_CLI_CMD_TYPE_NONE:
					break;
			}
		}

		/* Map of trunk resource and graph of packet type status display */
		else if( pCliContext->aDisplay[pCliContext->un32DisplayIndex] == VOIP_CLI_DISPLAY_TYPE_TRUNK_RES_MAP_AND_PACKET_TYPE_GRAPH )
		{
			/* Apply the user input */
			switch( io_pCmdInput->CmdType )
			{
				case VOIP_CLI_CMD_TYPE_QUIT:
					VoipCliCmdQuitApply( io_pCmdInput );
					break;

				case VOIP_CLI_CMD_TYPE_NEXT_DEMO_STEP:
					VoipCliCmdNextDemoStepApply( io_pCmdInput );
					break;

				case VOIP_CLI_CMD_TYPE_NONE:
					break;
			}
		}

		/* Inverted map of trunk resource and graph of packet type status display */
		else if( pCliContext->aDisplay[pCliContext->un32DisplayIndex] == VOIP_CLI_DISPLAY_TYPE_TRUNK_RES_INV_MAP_AND_PACKET_TYPE_GRAPH )
		{
			/* Apply the user input */
			switch( io_pCmdInput->CmdType )
			{
				case VOIP_CLI_CMD_TYPE_QUIT:
					VoipCliCmdQuitApply( io_pCmdInput );
					break;

				case VOIP_CLI_CMD_TYPE_NEXT_DEMO_STEP:
					VoipCliCmdNextDemoStepApply( io_pCmdInput );
					break;

				case VOIP_CLI_CMD_TYPE_NONE:
					break;
			}
		}
	}

	TBX_SEM_GIV (g_pContext->hThreadSem);

	return;
}

/*-------------------------------------------------------------------------------------------------------------------------------
 |
 |  VoipCliInit		:	Initialize CLI context.
 |
 |  Note			:	~
 |
 |  Return			:	TBX_RESULT_OK
 |						TBX_RESULT_FAIL
 |						or others
 |
 *------------------------------------------------------------------------------------------------------------------------------*/
TBX_RESULT VoipCliInit()
{
	PVOIP_CLI_CONTEXT	pCliContext;

	/*---------------------------------------------------------------------------------------------------------------------------
	 |  Code section
	 *--------------------------------------------------------------------------------------------------------------------------*/
	CODE
	{
		/* Initialize local variables */
		pCliContext				= &g_pContext->CliContext;
		memset( pCliContext, 0, sizeof(*pCliContext) );

		/* Initialize variables to handle the adapter selection */
		pCliContext->pActiveAdapterContext	= NULL;
		pCliContext->un32AdaptersCount		= 0;
		pCliContext->un32AdapterIndex		= 0;

		/* Initialize variables to handle the display type selection */
		pCliContext->un32DisplayCount	= 0;
		pCliContext->un32DisplayIndex	= 0;

		/* Initialize variables to handle the page selection */
		pCliContext->un32PageCount		= 0;
		pCliContext->un32PageIndex		= 0;

		/* End of the code (skip to cleanup) */
		TBX_EXIT_SUCCESS (TBX_RESULT_OK);
	}

	/*---------------------------------------------------------------------------------------------------------------------------
	 |  Error handling section
	 *--------------------------------------------------------------------------------------------------------------------------*/
	ERROR_HANDLING
	{
		fprintf(
			stdout,
			"VoipCliInit: %s (Result 0x%08X, %s, line %d)\n",
			TBX_ERROR_DESCRIPTION,
			(int)TBX_ERROR_RESULT,
			__FILE__,
			TBX_ERROR_LINE);
	}

	/*---------------------------------------------------------------------------------------------------------------------------
	 |  Cleanup section
	 *--------------------------------------------------------------------------------------------------------------------------*/
	CLEANUP
	{
	}

	RETURN;
}

/*-------------------------------------------------------------------------------------------------------------------------------
 |
 |  VoipCliUpdate	:	Update the Cli context and set Cli Tools parameters.
 |
 |  Note			:	~
 |
 |  Return			:	TBX_RESULT_OK
 |						TBX_RESULT_FAIL
 |						or others
 |
 *------------------------------------------------------------------------------------------------------------------------------*/
TBX_RESULT VoipCliUpdate()
{
	TBX_RESULT					Result;
	PVOIP_CLI_CONTEXT			pCliContext;
	PVOIP_ADAPTER_CONTEXT		pAdapterContext;
	PVOIP_ADAPTER_CONTEXT_NODE	pAdapterContextNode;
	TBX_UINT32					un32NbFreeBuffers;
	TBX_UINT32					un32NbUsedBuffers;
	TBX_UINT32					un32Index;

	/*---------------------------------------------------------------------------------------------------------------------------
	 |  Code section
	 *--------------------------------------------------------------------------------------------------------------------------*/
	CODE
	{
		/* Initialize local variables */
		pCliContext = &g_pContext->CliContext;

		/* Update adapter count */
		Result = TBXPoolOfBuffersGetUsage( g_pContext->hPoolOfAdapters, &un32NbFreeBuffers, &un32NbUsedBuffers);
		if( TBX_RESULT_FAILURE( Result ) == TBX_TRUE )
		{
			TBX_EXIT_ERROR( TBX_RESULT_OUT_OF_MEMORY, 0, "Failed to get usage of pool of adapter buffers!" );
		}
		pCliContext->un32AdaptersCount = un32NbUsedBuffers;

		/* Update adapter index */
		for( un32Index = 0; un32Index < pCliContext->un32AdaptersCount; un32Index++ )
		{
			pAdapterContextNode = TBXPoolOfBuffersFindBufferByIndex( g_pContext->hPoolOfAdapters, un32Index);
			if( pAdapterContextNode && pAdapterContextNode->pAdapterContext->State != VOIP_ADAPTER_STATE_NOT_USED )
			{
				pAdapterContext = pAdapterContextNode->pAdapterContext;
				break;
			}
		}

		if( un32Index >= pCliContext->un32AdaptersCount )
		{
			pCliContext->pActiveAdapterContext	= NULL;
			pCliContext->un32AdapterIndex		= 0;
		}
		else
		{
			pCliContext->pActiveAdapterContext	= pAdapterContext;
			pCliContext->un32AdapterIndex		= un32Index;
		}

		/* Update the display selection */
		pCliContext->un32DisplayCount	= 0;

		/* Main display always present */
		pCliContext->aDisplay[pCliContext->un32DisplayCount] = VOIP_CLI_DISPLAY_TYPE_MAIN;
		pCliContext->un32DisplayCount++;

		/* Check for connection information display */
		if( g_pContext->CurrentConfig.fShowConnectionInfoDisplay == TBX_TRUE )
		{
			pCliContext->aDisplay[pCliContext->un32DisplayCount] = VOIP_CLI_DISPLAY_TYPE_CONNECTION_INFO;
			pCliContext->un32DisplayCount++;
		}

		/* Check for stream information display */
		if( g_pContext->CurrentConfig.fShowStreamInfoDisplay == TBX_TRUE )
		{
			pCliContext->aDisplay[pCliContext->un32DisplayCount] = VOIP_CLI_DISPLAY_TYPE_STREAM_INFO;
			pCliContext->un32DisplayCount++;
		}

		/* Check for trunk information display */
		if( g_pContext->CurrentConfig.fShowTrunkInfoDisplay == TBX_TRUE )
		{
			pCliContext->aDisplay[pCliContext->un32DisplayCount] = VOIP_CLI_DISPLAY_TYPE_TRUNK_INFO;
			pCliContext->un32DisplayCount++;
		}

		/* Check for prompt information display */
		if( g_pContext->CurrentConfig.fShowPromptInfoDisplay == TBX_TRUE )
		{
			pCliContext->aDisplay[pCliContext->un32DisplayCount] = VOIP_CLI_DISPLAY_TYPE_PROMPT_INFO;
			pCliContext->un32DisplayCount++;
		}

		/* Check for prompt information display */
		if( g_pContext->CurrentConfig.fShowRawDataFileInfoDisplay == TBX_TRUE )
		{
			pCliContext->aDisplay[pCliContext->un32DisplayCount] = VOIP_CLI_DISPLAY_TYPE_RAW_DATA_FILE_INFO;
			pCliContext->un32DisplayCount++;
		}

		/* Check for BERT information display */
		if( g_pContext->CurrentConfig.fShowBertInfoDisplay == TBX_TRUE )
		{
			pCliContext->aDisplay[pCliContext->un32DisplayCount] = VOIP_CLI_DISPLAY_TYPE_BERT_INFO;
			pCliContext->un32DisplayCount++;
		}

		/* Check for trunk resource map display */
		if( g_pContext->CurrentConfig.fShowTrunkResMapDisplay == TBX_TRUE )
		{
			pCliContext->aDisplay[pCliContext->un32DisplayCount] = VOIP_CLI_DISPLAY_TYPE_TRUNK_RES_MAP;
			pCliContext->un32DisplayCount++;
		}

		/* Check for trunk resource map display */
		if( g_pContext->CurrentConfig.fShowTrunkResInvMapDisplay == TBX_TRUE )
		{
			pCliContext->aDisplay[pCliContext->un32DisplayCount] = VOIP_CLI_DISPLAY_TYPE_TRUNK_RES_INV_MAP;
			pCliContext->un32DisplayCount++;
		}

		/* Check for packet type graph display */
		if( g_pContext->CurrentConfig.fShowPacketTypeGraphDisplay == TBX_TRUE )
		{
			pCliContext->aDisplay[pCliContext->un32DisplayCount] = VOIP_CLI_DISPLAY_TYPE_PACKET_TYPE_GRAPH;
			pCliContext->un32DisplayCount++;
		}
		pCliContext->un32DisplayIndex = 0;

		/* Check for trunk resource map and packet type graph display */
		if( g_pContext->CurrentConfig.fShowTrunkResMapAndPacketTypeGraphDisplay == TBX_TRUE )
		{
			pCliContext->aDisplay[pCliContext->un32DisplayCount] = VOIP_CLI_DISPLAY_TYPE_TRUNK_RES_MAP_AND_PACKET_TYPE_GRAPH;
			pCliContext->un32DisplayCount++;
		}
		pCliContext->un32DisplayIndex = 0;

		/* Check for trunk resource inverted map and packet type graph display */
		if( g_pContext->CurrentConfig.fShowTrunkResInvMapAndPacketTypeGraphDisplay == TBX_TRUE )
		{
			pCliContext->aDisplay[pCliContext->un32DisplayCount] = VOIP_CLI_DISPLAY_TYPE_TRUNK_RES_INV_MAP_AND_PACKET_TYPE_GRAPH;
			pCliContext->un32DisplayCount++;
		}
		pCliContext->un32DisplayIndex = 0;

		/* Pass new settings to TBX CLI Tools */
		{
			TBX_CLI_TOOLS_INIT_PARAMS	CliToolsInitParams;

			/* Get the current parameters of the TBX Cli Tools */
			TbxCliToolsGetParams( pCliContext->hCliTools, &CliToolsInitParams, NULL, NULL );

			/* Set the new parameters of the TBX Cli Tools */
			CliToolsInitParams.TraceLevelStdout		= g_pContext->CurrentConfig.TraceLevelStdout;
			CliToolsInitParams.TraceLevelLogFile	= g_pContext->CurrentConfig.TraceLevelLogFile;
			CliToolsInitParams.un32MaxRefreshDelay	= g_pContext->CurrentConfig.un32MinRefresh;
			strncpy( CliToolsInitParams.szLogFileName, g_pContext->CurrentConfig.szLogFileName, sizeof(CliToolsInitParams.szLogFileName) );
			CliToolsInitParams.szLogFileName[ sizeof(CliToolsInitParams.szLogFileName) - 1 ] = '\0';
			TbxCliToolsSetParams( pCliContext->hCliTools, &CliToolsInitParams );
		}

		/* End of the code (skip to cleanup) */
		TBX_EXIT_SUCCESS (TBX_RESULT_OK);
	}

	/*---------------------------------------------------------------------------------------------------------------------------
	 |  Error handling section
	 *--------------------------------------------------------------------------------------------------------------------------*/
	ERROR_HANDLING
	{
		TbxCliToolsLogPrint(
			pCliContext->hCliTools,
			TRACE_LEVEL_ERROR, NULL,
			"VoipCliTraceLevel: %s (Result 0x%08X, %s, line %d)\n",
			TBX_ERROR_DESCRIPTION,
			(int)TBX_ERROR_RESULT,
			__FILE__,
			TBX_ERROR_LINE);
	}

	/*---------------------------------------------------------------------------------------------------------------------------
	 |  Cleanup section
	 *-------------------------------------------------------------------

⌨️ 快捷键说明

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