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.

DM8168,System_linkControl()改变参数信息之后,送到AlgLink_tskMain()中接收,如何处理?



HI:

大家好!

DM8168,DVR RDK ,DVRRDK_03.00.00.00版本。

问题:System_linkControl()改变参数信息之后,送到algLink_tsk.c文件中AlgLink_tskMain()接收,如果case中处理时间过长,使得数据拥堵,不能接收新的link发来的数据,case SYSTEM_CMD_NEW_DATA不再执行,该如何解决?

例如:

1、chains_singleChCapOsdDis.c中,执行System_linkControl(osdid,  ALG_LINK_OSD_CMD_SET_CHANNEL_WIN_PRM,  NULL,  0,  TRUE);

2、algLink_tsk.c文件中AlgLink_tskMain()函数中,执行到case ALG_LINK_OSD_CMD_SET_CHANNEL_WIN_PRM:      

            case ALG_LINK_OSD_CMD_SET_CHANNEL_WIN_PRM:
                 {
                   AlgLink_OsdChWinParams *params;

                   params = (AlgLink_OsdChWinParams *) Utils_msgGetPrm(pMsg);
                   AlgLink_OsdalgSetChOsdWinPrm(&pObj->osdAlg, params);
                   Utils_tskAckOrFreeMsg(pMsg, status);
                 }
                break;   【原函数】

 变为:

            case ALG_LINK_OSD_CMD_SET_CHANNEL_WIN_PRM:
                 {
                   AlgLink_OsdChWinParams *params;

                   sleep(60); /* 用意:给这个处理一个延时*/

                   params = (AlgLink_OsdChWinParams *) Utils_msgGetPrm(pMsg);
                   AlgLink_OsdalgSetChOsdWinPrm(&pObj->osdAlg, params);
                   Utils_tskAckOrFreeMsg(pMsg, status);
                 }
                break;   【原函数】

3、之后运行不正常,在case SYSTEM_CMD_NEW_DATA:中,AlgLink_algProcessData(pObj);函数,frameList.numFrames值变为10,上游link发送过来的帧数据堵塞,运行完for(frameId=0; frameId<frameList.numFrames; frameId++)之后,程序卡死,接收不到新的SYSTEM_CMD_NEW_DATA,此处该如何处理?

谢谢您看了这么多描述,不知道有没有描述清楚,感谢您的答复!