diff --git a/default.aproj b/default.aproj index 3145b61..7dd0904 100644 --- a/default.aproj +++ b/default.aproj @@ -19,5 +19,6 @@ + diff --git a/user/CanThread.aardio b/user/CanThread.aardio index 384e2f8..633b167 100644 --- a/user/CanThread.aardio +++ b/user/CanThread.aardio @@ -83,15 +83,22 @@ FuncDisplay = function(str){ loadcodex("\user\Diag10code.aardio"); +loadcodex("\user\Diag11code.aardio"); loadcodex("\user\Diag22code.aardio"); -loadcodex("\user\Diag85code.aardio"); -loadcodex("\user\Diag28code.aardio"); -loadcodex("\user\Diag7Fcode.aardio"); loadcodex("\user\Diag27code.aardio"); loadcodex("\user\Diag2Ecode.aardio"); -loadcodex("\user\DiagBootcode.aardio"); +loadcodex("\user\Diag28code.aardio"); +loadcodex("\user\Diag31code.aardio"); +loadcodex("\user\Diag34code.aardio"); +loadcodex("\user\Diag36code.aardio"); +loadcodex("\user\Diag37code.aardio"); +loadcodex("\user\Diag7Fcode.aardio"); +loadcodex("\user\Diag85code.aardio"); +loadcodex("\user\DiagBootcode.aardio"); loadcodex("\user\S19Decode.aardio"); + + RespState = 0; FuncDiagPro = function(diagmsg){ @@ -120,6 +127,9 @@ FuncDiagPro = function(diagmsg){ case 0x7F { FuncDiag7FPro(table.slice(diagmsg.data,1,diagmsg.len)) } + case 0x6E { + FuncDiag2EPro(table.slice(diagmsg.data,1,diagmsg.len)) + } else { } } diff --git a/user/Diag11code.aardio b/user/Diag11code.aardio new file mode 100644 index 0000000..6804389 --- /dev/null +++ b/user/Diag11code.aardio @@ -0,0 +1,9 @@ +//发送 +FuncReq11 = function(num){ + var txdata = {0x2,0x11,num,0x00,0x00,0x00,0x00,0x00}; + CANHw.SendMsg(DiagReqID,txdata); +} +//接收 +FuncDiag11Pro = function(data){ + FuncDisplay("复位成功") +} \ No newline at end of file diff --git a/user/Diag2Ecode.aardio b/user/Diag2Ecode.aardio index b99b246..4dab962 100644 --- a/user/Diag2Ecode.aardio +++ b/user/Diag2Ecode.aardio @@ -26,7 +26,7 @@ FuncReq2E = function(did,data){ else { var txdata = {3+#data,0x2E,did>>8,did&0xff,0,0,0,0}; for(i=1;#data;1){ - txdata[5+i] = data[i]; + txdata[4+i] = data[i]; } CANHw.SendMsg(DiagReqID,txdata); diff --git a/user/Diag31code.aardio b/user/Diag31code.aardio index 6ff17cb..d3e9b54 100644 --- a/user/Diag31code.aardio +++ b/user/Diag31code.aardio @@ -4,6 +4,17 @@ FuncReq31EraseFlash = function(addr,len){ FuncReq31(data); } +FuncReq31CheckLogicBlock = function(addr,len){ + var data = {0x02,0x02,0x44,addr>>24,addr>>16,addr>>8,addr,len>>24,len>>16,len>>8,len}; + FuncReq31(data); +} +FuncReq31CheckPD = function(){//Programming Dependencies + var data = {0xFF,0x01}; + FuncReq31(data); +} + + + //发送 FuncReq31 = function(data){ @@ -15,7 +26,7 @@ FuncReq31 = function(data){ else { var txdata = {2+#data,0x31,0x01,0, 0,0,0,0}; for(i=1;#data;1){ - txdata[5+i] = data[i]; + txdata[3+i] = data[i]; } CANHw.SendMsg(DiagReqID,txdata); } diff --git a/user/Diag36code.aardio b/user/Diag36code.aardio index 5f9b965..4f6b533 100644 --- a/user/Diag36code.aardio +++ b/user/Diag36code.aardio @@ -29,7 +29,7 @@ FuncGetSendStatus = function(){ return flag_sendend; } FuncSendNextBlock = function(){ - if(alldata>0x400){ + if(#alldata>0x400){ FuncReq36(blocknum,table.slice(alldata,1,0x400)); alldata = table.slice(alldata,0x401,) } @@ -45,9 +45,20 @@ FuncSendNextBlock = function(){ //发送 FuncReq36 = function(num,data){ len = #data+2; - var txdata = {0x10+(len>>8),len&0xff,0x36,num&0xff,data[1],data[2],data[3],data[4]}; - CANHw.SendMsg(DiagReqID,txdata); - FuncPushPackage(DiagReqID,table.slice(data,5)); + if(len > 7){ + var txdata = {0x10+(len>>8),len&0xff,0x36,num&0xff,data[1],data[2],data[3],data[4]}; + CANHw.SendMsg(DiagReqID,txdata); + FuncPushPackage(DiagReqID,table.slice(data,5)); + } + else { + var txdata = {len,0x36,num&0xff,0, 0,0,0,0}; + for(i=1;#data;1){ + txdata[i+3] = data[i]; + } + + CANHw.SendMsg(DiagReqID,txdata); + } + } //接收 diff --git a/user/Diag7Fcode.aardio b/user/Diag7Fcode.aardio index 0c935fa..a430c37 100644 --- a/user/Diag7Fcode.aardio +++ b/user/Diag7Fcode.aardio @@ -16,7 +16,10 @@ FuncDiag7FPro = function(data){ errNRC = data[2]; select(errNRC) { case 0x78 { - FuncDisplay("服务正忙") + if(errSID != 0x36){ + FuncDisplay("服务正忙") + } + } else { FuncDisplay("错误 - NRC:" + tostring(errNRC,16)) diff --git a/user/DiagBootcode.aardio b/user/DiagBootcode.aardio index cce190e..f722521 100644 --- a/user/DiagBootcode.aardio +++ b/user/DiagBootcode.aardio @@ -73,7 +73,7 @@ FuncSendBlockInit = function(){ blocknum = 1; if(alldata != null){ blocknum = 1; - FuncStartSendBlock(alldata[blocknum].["data"]) + FuncStartSendBlock(alldata[blocknum]["data"]) } } @@ -82,7 +82,7 @@ FuncSendBlockApp = function(){ select(sendblockstate) { case 0{ if(FuncSendBlockApp_sendflag == 0){ - FuncReq34(alldata[blocknum].["address"],#alldata[blocknum].["data"]); + FuncReq34(alldata[blocknum]["address"],#alldata[blocknum]["data"]); FuncSendBlockApp_sendflag = 1; RespState = 0; bootcount = 0; @@ -96,7 +96,7 @@ FuncSendBlockApp = function(){ } case 1 { - FuncStartSendBlock(alldata[blocknum].["data"]);//初始化 + FuncStartSendBlock(alldata[blocknum]["data"]);//初始化 FuncSendBlockApp_sendflag = 0; sendblockstate += 1; } @@ -151,6 +151,13 @@ FuncBootSeq = function(){ select(bootstate) { case 0 { //读取当前会话 + /* + var bootdata = FuncGetAllData(); + if(#bootdata < 1){ + FuncDisplay("请打开文件"); + boottimer.disable(); + return 0; + }*/ if(sendstate == 0){ FuncReadDID(0xF186); FuncClearState(); @@ -242,8 +249,9 @@ FuncBootSeq = function(){ } case 9 { if(sendstate == 0){ - FuncDIDWriteStr(0xf198,"0123456789abcdef1234");//写入repair_shopcode FuncClearState(); + FuncDIDWriteStr(0xf198,"0123456789abcdef1234");//写入repair_shopcode + } else { var ret = FuncWait(0x2E); @@ -259,7 +267,7 @@ FuncBootSeq = function(){ var day = BCD_Conv(time.now().day); FuncReq2E(0XF199,{year1,year2,month,day}) FuncClearState(); - + console.log("写入installation_date") } else { var ret = FuncWait(0x2E); @@ -289,17 +297,76 @@ FuncBootSeq = function(){ } } case 13 { - if(sendstate == 0){//发送数据 - FuncSendBlockInit(); + if(sendstate == 0){//CheckLogicBlock + FuncReq31CheckLogicBlock(0x00FE0000,0x00019FCC); FuncClearState(); } else { - var ret = FuncSendBlockApp(); + var ret = FuncWait(0x31); + nextstate(ret); + } + } + case 14 { + if(sendstate == 0){////Programming Dependencies + FuncReq31CheckPD(); + FuncClearState(); + } + else { + var ret = FuncWait(0x31); + nextstate(ret); + } + } + case 15 { + if(sendstate == 0){//复位 + FuncReq11(0x01); + FuncClearState(); + } + else { + var ret = FuncWait(0x11); nextstate(ret); - } } + case 16 { + if(sendstate == 0){ + FuncReq10(true,0x03);//进入扩展会话 + FuncClearState(); + } + else { + var ret = FuncWait(0x10); + nextstate(ret); + } + } + case 17 { + if(sendstate == 0){ + FuncReq28(0x00,0x01);//开启发送 + FuncClearState(); + } + else { + var ret = FuncWait(0x28); + nextstate(ret); + } + } + case 18 { + if(sendstate == 0){ + FuncReq85(0x01);//开启DTC + FuncClearState(); + } + else { + var ret = FuncWait(0x85); + nextstate(ret); + } + } + case 19 { + if(sendstate == 0){ + FuncReq10(true,0x01);//进入默认会话 + FuncClearState(); + } + else { + var ret = FuncWait(0x10); + nextstate(ret); + } + } else { FuncDisplay("刷写完成") boottimer.disable();