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

📄 voip_stress_test.c

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

		pConnectionContext = TBXPoolOfBuffersNext( in_pAdapterContext->CurrentConfig.hPoolOfConnections, pConnectionContext );
	}

	return;
}

/*-------------------------------------------------------------------------------------------------------------------------------
 |
 |  VoipStressTestGetFreeTrunkRes	:	Get free trunk resource.
 |
 |  Note							:	~
 |
 |  Return							:	~
 |
 *------------------------------------------------------------------------------------------------------------------------------*/
TBX_RESULT VoipStressTestGetFreeTrunkRes(
	IN		PVOIP_ADAPTER_CONTEXT	in_pAdapterContext,
	IN		PTBX_UINT32				io_pun32TrunkNb,
	IN		PTBX_UINT32				io_pun32TimeSlot )
{
	PVOIP_CLI_CONTEXT	pCliContext;
	PVOIP_TRUNK_CONFIG	pTrunkConfig;
	PVOIP_TRUNK_RES		pTrunkRes;
	TBX_UINT32			un32TrunkNb;
	TBX_UINT32			un32TimeSlot;
	TBX_BOOL			fFound;

	/*---------------------------------------------------------------------------------------------------------------------------
	 |  Code section
	 *--------------------------------------------------------------------------------------------------------------------------*/
	CODE
	{
		/* Initialize local variables */
		pCliContext		= &g_pContext->CliContext;
		fFound			= TBX_FALSE;
		un32TimeSlot	= 0;
		pTrunkRes		= NULL;

		/* Found free trunk resource */
		for( un32TrunkNb = 0; un32TrunkNb < VOIP_MAX_TRUNK_PER_ADAPTER; un32TrunkNb++ )
		{
			pTrunkConfig = &in_pAdapterContext->CurrentConfig.aTrunk[un32TrunkNb];

			if( pTrunkConfig->fAllocated == TBX_TRUE )
			{
				for( un32TimeSlot = 0; un32TimeSlot <= pTrunkConfig->un32MaxTimeSlot; un32TimeSlot++ )
				{
					pTrunkRes = &pTrunkConfig->aRes[un32TimeSlot];

					if( (pTrunkRes->Common.fAllocated == TBX_TRUE) && (pTrunkRes->Common.fUsed == TBX_FALSE) && (pTrunkRes->Common.fReserved == TBX_FALSE) )
					{
						/* Gotcha! */
						fFound = TBX_TRUE;
						break;
					}
				}

				if( fFound == TBX_TRUE )
					break;
			}
		}

		if( fFound == TBX_FALSE )
		{
			TbxCliToolsLogPrint( pCliContext->hCliTools, TRACE_LEVEL_1, NULL, "Failed to found free trunk resource" );

			TBX_EXIT_SUCCESS( TBX_RESULT_NOT_FOUND );
		}

		pTrunkRes->Common.fReserved = TBX_TRUE;
		*io_pun32TrunkNb = un32TrunkNb;
		*io_pun32TimeSlot = un32TimeSlot;

		/* 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,
			"VoipStressTestGetFreeTrunkRes: %s (Result 0x%08X, %s, line %d)\n",
			TBX_ERROR_DESCRIPTION,
			(int)TBX_ERROR_RESULT,
			__FILE__,
			TBX_ERROR_LINE);
	}

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

	RETURN;
}

/*-------------------------------------------------------------------------------------------------------------------------------
 |
 |  VoipStressTestGetFreeMblPortRes	:	Get free MBL port resource.
 |
 |  Note							:	~
 |
 |  Return							:	~
 |
 *------------------------------------------------------------------------------------------------------------------------------*/
TBX_RESULT VoipStressTestGetFreeMblPortRes(
	IN		PVOIP_ADAPTER_CONTEXT	in_pAdapterContext,
	IN		PTBX_UINT32				io_pun32MblPortNb,
	IN		PTBX_UINT32				io_pun32MblStreamNb,
	IN		PTBX_UINT32				io_pun32MblTimeSlot )
{
	PVOIP_CLI_CONTEXT		pCliContext;
	PVOIP_MBL_PORT_CONFIG	pMblPortConfig;
	PVOIP_MBL_RES			pMblPortRes;
	TBX_UINT32				un32MblPortNb;
	TBX_UINT32				un32MblStreamNb;
	TBX_UINT32				un32MblTimeSlot;
	TBX_BOOL				fFound;

	/*---------------------------------------------------------------------------------------------------------------------------
	 |  Code section
	 *--------------------------------------------------------------------------------------------------------------------------*/
	CODE
	{
		/* Initialize local variables */
		pCliContext		= &g_pContext->CliContext;
		fFound			= TBX_FALSE;
		un32MblTimeSlot	= 0;
		un32MblStreamNb	= 0;
		pMblPortRes		= NULL;

		/* Found free MBL port resource */
		for( un32MblPortNb = 0; un32MblPortNb < VOIP_MAX_MBL_PORT_PER_ADAPTER; un32MblPortNb++ )
		{
			pMblPortConfig = &in_pAdapterContext->CurrentConfig.aMblPort[un32MblPortNb];

			if( pMblPortConfig->fAllocated == TBX_TRUE )
			{
				for( un32MblStreamNb = 0; un32MblStreamNb < VOIP_MAX_STREAM_PER_MBL_PORT; un32MblStreamNb++ )
				{
					for( un32MblTimeSlot = 0; un32MblTimeSlot < VOIP_MAX_TIMESLOT_PER_MBL_STREAM; un32MblTimeSlot++ )
					{
						pMblPortRes = &pMblPortConfig->aRes[ un32MblStreamNb ] [ un32MblTimeSlot ];

						if( (pMblPortRes->Common.fAllocated == TBX_TRUE) && (pMblPortRes->Common.fUsed == TBX_FALSE) && (pMblPortRes->Common.fReserved == TBX_FALSE) )
						{
							/* Gotcha! */
							fFound = TBX_TRUE;
							break;
						}
					}

					if( fFound == TBX_TRUE )
						break;
				}

				if( fFound == TBX_TRUE )
					break;
			}
		}

		if( fFound == TBX_FALSE )
		{
			TbxCliToolsLogPrint( pCliContext->hCliTools, TRACE_LEVEL_1, NULL, "Failed to found free MBL port resource" );

			TBX_EXIT_SUCCESS( TBX_RESULT_NOT_FOUND );
		}

		pMblPortRes->Common.fReserved = TBX_TRUE;
		*io_pun32MblPortNb = un32MblPortNb;
		*io_pun32MblStreamNb = un32MblStreamNb;
		*io_pun32MblTimeSlot = un32MblTimeSlot;

		/* 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,
			"VoipStressTestGetFreeMblPortRes: %s (Result 0x%08X, %s, line %d)\n",
			TBX_ERROR_DESCRIPTION,
			(int)TBX_ERROR_RESULT,
			__FILE__,
			TBX_ERROR_LINE);
	}

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

	RETURN;
}

/*-------------------------------------------------------------------------------------------------------------------------------
 |
 |  VoipStressTestReleaseTrunkRes	:	Release trunk resource.
 |
 |  Note							:	~
 |
 |  Return							:	~
 |
 *------------------------------------------------------------------------------------------------------------------------------*/
TBX_RESULT VoipStressTestReleaseTrunkRes(
	IN		PVOIP_ADAPTER_CONTEXT	in_pAdapterContext,
	IN		TBX_UINT32				in_un32TrunkNb,
	IN		TBX_UINT32				in_un32TimeSlot )
{
	PVOIP_CLI_CONTEXT	pCliContext;
	PVOIP_TRUNK_CONFIG	pTrunkConfig;
	PVOIP_TRUNK_RES		pTrunkRes;

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

		pTrunkConfig	= &in_pAdapterContext->CurrentConfig.aTrunk[in_un32TrunkNb];
		pTrunkRes		= &pTrunkConfig->aRes[in_un32TimeSlot];

		pTrunkRes->Common.fReserved = TBX_FALSE;

		/* 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,
			"VoipStressTestReleaseTrunkRes: %s (Result 0x%08X, %s, line %d)\n",
			TBX_ERROR_DESCRIPTION,
			(int)TBX_ERROR_RESULT,
			__FILE__,
			TBX_ERROR_LINE);
	}

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

	RETURN;
}

/*-------------------------------------------------------------------------------------------------------------------------------
 |
 |  VoipStressTestGetFreeIpPort	:	Get free Rx/Tx IP ports
 |
 |  Note						:	~
 |
 |  Return						:	~
 |
 *------------------------------------------------------------------------------------------------------------------------------*/
TBX_RESULT VoipStressTestGetFreeIpPort(
	IN			PVOIP_ADAPTER_CONTEXT	in_pAdapterContext,
	IN			TB640_VP_GROUP_TYPE		in_GroupType,
	IN OUT		PTBX_UINT16				io_pun16RxIPPort,
	IN OUT		PTBX_UINT16				io_pun16TxIPPort )
{
	PVOIP_CLI_CONTEXT	pCliContext;
	TBX_UINT32			un32Index;
	TBX_UINT32			un32Index2;

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

		/* Get free IP port and reserved it */
		for( un32Index = 0; un32Index < VOIP_STRESS_TEST_IP_PORT_COUNT; un32Index++ )
		{
			un32Index2 = ((in_pAdapterContext->StressTest.un32IpPortReservedLast + un32Index + 1) % VOIP_STRESS_TEST_IP_PORT_COUNT);

			if( (in_GroupType == TB640_VP_GROUP_TYPE_1) &&
				(in_pAdapterContext->pTargetConfig->VpGrp1Params.fStreamRtcpUseRtcp == TBX_TRUE) && ((un32Index2 % 2) != 0) )
			{
				/* Port number must be even when using RTCP */
				continue;
			}
			if( in_pAdapterContext->StressTest.afIpPortReserved[un32Index2] == TBX_FALSE )
			{
				in_pAdapterContext->StressTest.afIpPortReserved[un32Index2]	= TBX_TRUE;
				in_pAdapterContext->StressTest.un32IpPortReservedLast		= un32Index2;

				*io_pun16RxIPPort = (TBX_UINT16)(VOIP_STRESS_TEST_FIRST_IP_PORT + un32Index2);
				*io_pun16TxIPPort = *io_pun16RxIPPort;
				break;
			}
		}

		if( un32Index == VOIP_STRESS_TEST_IP_PORT_COUNT )
		{
			TBX_EXIT_ERROR( TBX_RESULT_NOT_FOUND, 0, "Failed to found free IP port!" );
		}

		/* 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,
			"VoipStressTestGetFreeIpPort: %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 + -