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,此处该如何处理?
谢谢您看了这么多描述,不知道有没有描述清楚,感谢您的答复!