Part Number: TDA3XEVM
Hi,
I am adding a Network_Ctrl API to set the FFT window size from external PC. I have code in the TDA3 network_ctrl to handle the request as follow:
Void NetworkCtrl_cmdHandlerChangeFFTWindow(char *cmd, UInt32 prmSize) {
UInt32 linkId;
UInt8 *pBuf, *pwType;
AlgorithmFxn_RadarFftControlParams fftCtrlParam;
Int32 status;
Vps_printf(" NetworkCtrl_cmdHandlerChangeFFTWindow: =================> Enter");
/* alloc tmp buffer for parameters */
if(prmSize == 1) {
/* read parameters */
pBuf = ChainsCommon_Osal_memAlloc(prmSize, 32);
UTILS_assert(pBuf != NULL);
pwType = (UInt8*)ChainsCommon_Osal_getVirtAddr((UInt32)pBuf);
/* read parameters */
NetworkCtrl_readParams(pwType, prmSize);
// convert the wType into integer value
UInt32 wType = *pwType;
Vps_printf(" NETWORK_CTRL: %s: %u", cmd, wType);
fftCtrlParam.baseClassControl.controlCmd = ALGORITHM_LINK_RADAR_FFT_WINDOW_TYPE_CMD;
fftCtrlParam.fftWinType = (AlgorithmFxn_RadarFFTWindowType)wType;
linkId = DSP1_LINK (SYSTEM_LINK_ID_ALG_0);
status= System_linkControl(
linkId,
ALGORITHM_LINK_CMD_CONFIG,
&fftCtrlParam,
sizeof(fftCtrlParam),
TRUE
);
UTILS_assert(0 == status);
}
else
{
Vps_printf(" NETWORK_CTRL: %s: Insufficient parameters (%d bytes) specified !!!\n", cmd, prmSize);
}
/* send response */
NetworkCtrl_writeParams(NULL, 0, 0);
Vps_printf(" NetworkCtrl_cmdHandlerChangeFFTWindow: =================> Exit");
}
The call never triggered the Algorithm control function AlgorithmFxn_RadarFftControl() to take action. The code is bellow:
Int32 AlgorithmFxn_RadarFftControl(void *alg_handle,
AlgorithmLink_RadarProcessControlParams *controlParams)
{
Int32 status = SYSTEM_LINK_STATUS_SOK;
AlgorithmFxn_RadarFftControlParams * fftCtrlParams = (AlgorithmFxn_RadarFftControlParams *)controlParams;
AlgorithmFxn_RadarFftObj *pFftParamObj = (AlgorithmFxn_RadarFftObj *) alg_handle;
Vps_printf(" AlgorithmFxn_RadarFftControl: ENTER - controlCmd %d\n", fftCtrlParams->baseClassControl.controlCmd);
switch(fftCtrlParams->baseClassControl.controlCmd)
{
case ALGORITHM_LINK_RADAR_FFT_WINDOW_TYPE_CMD:
if(fftCtrlParams->baseClassControl.size != sizeof(AlgorithmFxn_RadarFftControlParams))
{
status = SYSTEM_LINK_STATUS_EINVALID_PARAMS;
Vps_printf(" AlgorithmFxn_RadarFftControl: ENTER - Invalid Size\n");
}
else
{
pFftParamObj->algLinkCreateParams.fftWindowType = fftCtrlParams->fftWinType;
status = radarFFTControl_UseWindowType(pFftParamObj);
Vps_printf(" AlgorithmFxn_RadarFftControl: FFT Window Type - %d\n", fftCtrlParams->fftWinType);
}
break;
default:
Vps_printf(" AlgorithmFxn_RadarFftControl: ENTER - Default case\n");
break;
}
return status;
}
Thanks,
--Khai