提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
UDS smoke test Capl
提示:以下是本篇文章正文内容,下面案例可供参考
一、使用步骤
1.引入库
代码如下(示例):
variables
{
diagRequest MFC5J3.SeedLevel1_Request g_req_Request;
diagRequest MFC5J3.KeyLevel1_Send g_req_Send;
dword KeyNumber;
dword SeedNumber;
dword Send_Byte3,Send_Byte4,Send_Byte5,Send_Byte6;
}
dword ChangAn_SecurityAlgorithm(dword Seed, dword MASK)
{
/* temporary variables */
int t_Iteration_ul;
long t_Seed2_ul = 0;
long t_Key_ul = 0;
long t_Key1_ul = 0;
long t_Key2_ul = 0;
if (Seed != 0)
{
t_Key1_ul = Seed ^ MASK;
for (t_Iteration_ul = 0; t_Iteration_ul < 32; t_Iteration_ul++)
{
t_Seed2_ul |= ((Seed >> t_Iteration_ul) & 0x1) << (31 - t_Iteration_ul);
}
t_Key2_ul = t_Seed2_ul ^ MASK;
t_Key_ul = t_Key1_ul + t_Key2_ul;
write("long :%lx",t_Key_ul);
}
else
{
write("27 services Wrong");
}
return t_Key_ul;
}
2.读入数据
代码如下(示例):
testcase TC_UDS_Services_Smoke_Test(char TC_ID[])
{
/*****************Pre-condition****************/
G_Log_Start("TestModule_UDS_TP",TC_ID,"Logging","asc");
g_Precondition_UDS_TP();
G_Flag_Need_TP = 1;
/*****************Main Step******************/
// 10 01
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x10,0x01,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[0] == 0x06) && (G_On_Message_Rxbuffer[1] == 0x50) && (G_On_Message_Rxbuffer[2] == 0x01))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 10 01","Should Get 50 01","Get 50 01");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 10 01","Should Get 50 01","No 50 01");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 10 01","Should Get 50 01","No Feedback");
}
// 10 03
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x10,0x03,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[0] == 0x06) && (G_On_Message_Rxbuffer[1] == 0x50) && (G_On_Message_Rxbuffer[2] == 0x03))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 10 03","Should Get 50 03","Get 50 03");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 10 03","Should Get 50 03","No 50 03");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 10 03","Should Get 50 03","No Feedback");
}
// 10 02
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x10,0x02,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if(G_On_Message_Rxbuffer[3] == 0x78)
{
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[0] == 0x06) && (G_On_Message_Rxbuffer[1] == 0x50) && (G_On_Message_Rxbuffer[2] == 0x02))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 10 02","Should Get 50 02","Get 50 02");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 10 02","Should Get 50 02","No 50 02");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 10 02","Should Get 50 02","No Feedback 50 02");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 10 02","Should Get 50 02","No 78");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 10 02","Should Get 50 02","No Feedback");
}
testWaitForTimeout(5500);
//11 01
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x10,0x03,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
testWaitForTimeout(2000);
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x11,0x01,G_Padding_S,G_Padding_S,G_Padding_S,G_Padding_S,G_Padding_S);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[0] == 0x02) && (G_On_Message_Rxbuffer[1] == 0x51) && (G_On_Message_Rxbuffer[2] == 0x01))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 11 01","Should Get 51 01","Get 51 01");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 11 01","Should Get 51 01","No 51 01");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 11 01","Should Get 51 01","No Feedback");
}
testWaitForTimeout(5000);
//11 03
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x10,0x03,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
testWaitForTimeout(2000);
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x11,0x03,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[0] == 0x02) && (G_On_Message_Rxbuffer[1] == 0x51) && (G_On_Message_Rxbuffer[2] == 0x03))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 11 03","Should Get 51 01","Get 51 03");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 11 03","Should Get 51 01","No 51 03");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 11 03","Should Get 51 01","No Feedback");
}
testWaitForTimeout(3000);
// 14 FF FF FF
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x10,0x01,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
testWaitForTimeout(50);
G_TestStep_Send_TP(-1,"Physical",8,0x04,0x14,0xFF,0xFF,0xFF,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[0] == 0x01) && (G_On_Message_Rxbuffer[1] == 0x54))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 14 FF FF FF","Should Get 54","Get 54");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 14 FF FF FF","Should Get 54","No 54");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 14 FF FF FF","Should Get 54","No Feedback");
}
// 19 01 FF
G_TestStep_Send_TP(-1,"Physical",8,0x03,0x19,0x01,0xFF,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[1] == 0x59) && (G_On_Message_Rxbuffer[2] == 0x01))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 19 01 FF","Should Get 59 01","Get 59 01");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 19 01 FF","Should Get 59 01","No 59 01");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 19 01 FF","Should Get 59 01","No Feedback");
}
//19 02 FF
G_TestStep_Send_TP(-1,"Physical",8,0x03,0x19,0x02,0xFF,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[1] == 0x59) && (G_On_Message_Rxbuffer[2] == 0x02))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 19 02 FF","Should Get 59 02","Get 59 02");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 19 02 FF","Should Get 59 02","No 59 02");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 19 02 FF","Should Get 59 02","No Feedback");
}
// 19 04
G_TestStep_Send_TP(-1,"Physical",8,0x06,0x19,0x04,0xA2,0x00,0x16,0x01,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[1] == 0x59) && (G_On_Message_Rxbuffer[2] == 0x04))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 19 04","Should Get 59 04","Get 59 04");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 19 04","Should Get 59 04","No 59 04");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 19 04","Should Get 59 04","No Feedback");
}
//19 06
G_TestStep_Send_TP(-1,"Physical",8,0x06,0x19,0x06,0xA2,0x00,0x16,0x01,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[1] == 0x59) && (G_On_Message_Rxbuffer[2] == 0x06))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 19 06","Should Get 59 06","Get 59 06");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 19 06","Should Get 59 06","No 59 06");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 19 06","Should Get 59 06","No Feedback");
}
//19 0A
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x19,0x0A,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[2] == 0x59) && (G_On_Message_Rxbuffer[3] == 0x0A))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 19 0A","Should Get 59 0A","Get 59 0A");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 19 0A","Should Get 59 0A","No 59 0A");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 19 0A","Should Get 59 0A","No Feedback");
}
testWaitForTimeout(1000);
// 27
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x10,0x03,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
testWaitForTimeout(2000);
g_req_Request.SendRequest();
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[1] == 0x67) && (G_On_Message_Rxbuffer[2] == 0x01))
{
SeedNumber = G_On_Message_Rxbuffer[3];
SeedNumber = (SeedNumber<<8) + G_On_Message_Rxbuffer[4];
SeedNumber = (SeedNumber<<8) + G_On_Message_Rxbuffer[5];
SeedNumber = (SeedNumber<<8) + G_On_Message_Rxbuffer[6];
G_TestStep_TestStepPass(G_TS_ID,"Send 27 01","Should Get 67 01","Get 67 01");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 27 01","Should Get 67 01","No 67 01");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 27 01","Should Get 67 01","No Feedback");
}
KeyNumber = ChangAn_SecurityAlgorithm(SeedNumber,0x527F6374);
Send_Byte3 = KeyNumber >> 24 & 0xFF;
Send_Byte4 = KeyNumber >> 16 & 0xFF;
Send_Byte5 = KeyNumber >> 8 & 0xFF;
Send_Byte6 = KeyNumber & 0xFF;
G_TestStep_Send_TP(-1,"Physical",8,0x06,0x27,0x02,Send_Byte3,Send_Byte4,Send_Byte5,Send_Byte6,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[1] == 0x67) && (G_On_Message_Rxbuffer[2] == 0x02))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 27 02","Should Get 67 02","Get 67 02");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 27 02","Should Get 67 02","No 67 02");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 27 02","Should Get 67 02","No Feedback");
}
//2E
G_TestStep_Send_TP(-1,"Physical",8,0x04,0x2E,0xF1,0xF3,0x00,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[1] == 0x6E) && (G_On_Message_Rxbuffer[2] == 0xF1) && (G_On_Message_Rxbuffer[3] == 0xF3))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 2E F1 F3","Should Get 6E F1 F3","Get 6E F1 F3");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 2E F1 F3","Should Get 6E F1 F3","No 6E F1 F3");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 2E F1 F3","Should Get 6E F1 F3","No Feedback");
}
// 28 00 03
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x10,0x03,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
testWaitForTimeout(50);
G_TestStep_Send_TP(-1,"Physical",8,0x03,0x28,0x00,0x03,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[1] == 0x68) && (G_On_Message_Rxbuffer[2] == 0x00))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 28 00 03","Should Get 68 00 03","Get 68 00 03");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 28 00 03","Should Get 68 00 03","No 68 00 03");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 28 00 03","Should Get 68 00 03","No Feedback");
}
// 28 03 03
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x10,0x03,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
testWaitForTimeout(50);
G_TestStep_Send_TP(-1,"Physical",8,0x03,0x28,0x03,0x03,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[1] == 0x68) && (G_On_Message_Rxbuffer[2] == 0x03))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 28 03 03","Should Get 68 03 03","Get 68 03 03");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 28 03 03","Should Get 68 03 03","No 68 03 03");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 28 03 03","Should Get 68 03 03","No Feedback");
}
//3E 00
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x3E,0x00,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[1] == 0x7E) && (G_On_Message_Rxbuffer[2] == 0x00))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 3E 00","Should Get 7E 00","Get 7E 00");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 3E 00","Should Get 7E 00","No 7E 00");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 3E 00","Should Get 7E 00","No Feedback");
}
//85 01
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x10,0x03,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
testWaitForTimeout(50);
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x85,0x01,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[1] == 0xC5) && (G_On_Message_Rxbuffer[2] == 0x01))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 85 01","Should Get C5 01","Get C5 01");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 85 01","Should Get C5 01","No C5 01");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 85 01","Should Get C5 01","No Feedback");
}
//85 02
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x10,0x03,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
testWaitForTimeout(50);
G_TestStep_Send_TP(-1,"Physical",8,0x02,0x85,0x02,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C,G_Padding_C);
if(testWaitForTextEvent("Get_UDS_TP_FeedBack",5000) == 1)
{
if((G_On_Message_Rxbuffer[1] == 0xC5) && (G_On_Message_Rxbuffer[2] == 0x02))
{
G_TestStep_TestStepPass(G_TS_ID,"Send 85 02","Should Get C5 02","Get C5 02");
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 85 02","Should Get C5 02","No C5 02");
}
}
else
{
G_TestStep_TestStepFail(G_TS_ID,"Send 85 02","Should Get C5 02","No Feedback");
}
/******************Post Condition***************/
G_Flag_Need_TP = 0;
G_Log_Stop();
}