前面有介绍了如何通过CAPL函数检查被测件发出的所有报文都在dbc中有定义,今天我们来介绍一下源码,主要通过初始化函数获取到DUT发出的报文并且与dbc定义比对,然后将获取到的所有报文ID作为事件加入到服务中,然后通过事件检测函数,检查是否有非定义报文从被测件发出。
优化前函数源码
//检查DUT发出的报文均在database中有定义
void Check_DUTId_AllIn_Databae(dword check_t)
{
int i,j,k,m;
int addflag, event_flag, trigger_num, event_msg,dbc_d;
char dbc_define[500],tempnuf[7];
//切换到需要检测被测件的CAN通道
SetBusContext("CAN2");
//初始化变量
dbc_d = event_msg = trigger_num = event_flag = addflag = 0;
testStep("Step","Function name Check_DUTId_AllIn_Databae");
//打印获取dbc定义的报文id及信息
for(i=0;i<DUTTxNum;i++)
testStep("Debug","GloubalDUT_data[%d][0] = 0x%x",i,GloubalDUT_data[i][0]);
//加入非dbc定义的报文到事件中
for(i=1;i<0x800;i++){
for(