📄 voip_stress_test.c
字号:
}
}
}
}
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 + -