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