This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA3XEVM: Changing FFT Window FAILED to flow to the AlgorithmFxn_RadarFftControl()

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

  • Hi,

    A few questions
    1. Are you getting the proper value and command inside your implemented api? Whether Vps_printf(" NETWORK_CTRL: %s: %u", cmd, wType) is giving proper output?
    2. Can you confirm the linkid from your usecase and linkId = DSP1_LINK (SYSTEM_LINK_ID_ALG_0); are same. Please print these 2 value from usecase and your implemented api and verify.
    3. Please make sure atleast its going inside tskMain function of algorithm link
    PROCESSOR_SDK_VISION_03_06_00_00\vision_sdk\links_fw\src\rtos\links_common\algorithm\algorithmLink_tsk.c

    Regards,
    Anuj
  • Hi Anuj,

    Thanks for responding. The message did get to the algorithmLink_tsk.c tskMain function. However, I have printf in the control function inside radarFft2.c but wasn't triggered. See log below:

    [IPU1-1] 16.885499 s: NETWORK_CTRL: Received command [radar_change_fft_window], with 1 bytes of parameters
    [IPU1-1] 16.885896 s: NetworkCtrl_cmdHandlerChangeFFTWindow: =================> Enter
    [IPU1-1] 16.886414 s: NETWORK_CTRL: radar_change_fft_window: 2                                               =========> Answer to 1
    [IPU1-1] 16.886506 s: NetworkCtrl_cmdHandlerChangeFFTWindow: - DSP Link ID: 3000031            =========> Answer to 2. Yes.  
    [IPU1-1] 16.886963 s: NetworkCtrl_cmdHandlerChangeFFTWindow: =================> Exit
    [IPU1-1] 16.887116 s: NETWORK_CTRL: Sent response for command [radar_change_fft_window], with 0 bytes of parameters
    [DSP1 ] 16.886658 s: AlgorithmLink_tskMain: - FFT algId 11

    Below is the case in tskMain.c that handles ALGORITHM_LINK_CMD_CONFIG:

    case ALGORITHM_LINK_CMD_CONFIG:

    if(pObj->state==SYSTEM_LINK_STATE_RUNNING)
    {
    pControlParams =
    (AlgorithmLink_ControlParams *)Utils_msgGetPrm(pMsg);
    #if defined (BUILD_ARP32)
    Utils_idleEnableEveDMA();
    #endif
    Vps_printf(" AlgorithmLink_tskMain: - FFT algId %d\n", pObj->algId);
    if(gAlgorithmLinkFuncTable[pObj->algId].
    AlgorithmLink_AlgPluginControl != NULL)
    {
    status =
    (*(gAlgorithmLinkFuncTable[pObj->algId].
    AlgorithmLink_AlgPluginControl))
    ((void *) pObj,
    (void *) pControlParams
    );
    }
    #if defined (BUILD_ARP32)
    Utils_idleDisableEveDMA();
    #endif
    }

    Utils_tskAckOrFreeMsg(pMsg, status);
    break;

  • Problem solved

  • Hi,

    Can you explain what was the issue and the its solution?

    Regards,
    Anuj