out of box demo里面的68xx_mmwave_sdk_dsp例程里面的DPM_execute()函数问题

你好! 请教一下,DPM_execute实现是不是会实现DPC_execute()的无限循环?是如何关联的?从哪个代码能看出来?

int32_t DPM_execute (DPM_Handle handle, DPM_Buffer* ptrResult)

{ DPM_MCB* ptrDPM;

uintptr_t key;

bool executeDPC;

int32_t retVal;

int32_t errCode = 0;

/* Sanity Check: Validate the arguments */

ptrDPM = (DPM_MCB*)handle;

if (ptrDPM == NULL) {

/* Error: Invalid argument */

retVal = DPM_EINVAL; goto exit; }

/* Pending on the semaphore: Waiting for events to be received */

SemaphoreP_pend (ptrDPM->semaphoreHandle, SemaphoreP_WAIT_FOREVER); /*

Initialize the result buffer: */ memset ((void *)ptrResult, 0, sizeof(DPM_Buffer));

/* Process any IPC messages: We ignore the return value because if there * are any issues while processing the IPC Message the application is * notified via the reporting mechanism */

DPM_msgRecv (ptrDPM, &errCode);

/* Are we responsible for the processing chain? */

if (ptrDPM->dpcHandle != NULL) {

/********************************************************************** * Critical Section: Take a snapshot of the status flag and reset it **********************************************************************/

key = HwiP_disable(); executeDPC = ptrDPM->executeDPC; ptrDPM->executeDPC = false; HwiP_restore(key);

/* Do we need to invoke the method? */ if (executeDPC == true) { /* YES: Invoke the processing chain execute method */

retVal = ptrDPM->procChainCfg.executeFxn (ptrDPM->dpcHandle, ptrResult); } else {

/* NO: We are done */

retVal = 0; } } else {

/* We are done: */

retVal = 0; } exit: