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();