Отделена реакция на пустой ответ модема

Восстановлен выход при ошибке закрытия раздела
pull/15/head
forth32 8 years ago
parent f05886c4b5
commit 713b36f2bd

@ -270,7 +270,7 @@ printf("\n Утилита предназначена для прошивки м
return;
}
}
printf("\n Программа для прошивки устройств на Balong-чипсете, V2.6 Build %i, (c) forth32, 2015, GNU GPLv3",BUILDNO);
printf("\n Программа для прошивки устройств на Balong-чипсете, V2.6.%i, (c) forth32, 2015, GNU GPLv3",BUILDNO);
#ifdef WIN32
printf("\n Порт для Windows 32bit (c) rust3028, 2016");
#endif
@ -468,8 +468,12 @@ if (memcmp(replybuf,OKrsp,6) != 0) {
hdlc:
iolen=send_cmd(cmdver,1,replybuf);
if (iolen == 0) {
printf("\n Нет ответа от модема в HDLC-режиме\n");
return;
}
if (replybuf[0] == 0x7e) memcpy(replybuf,replybuf+1,iolen-1);
if ((iolen == 0)||(replybuf[0] != 0x0d)) {
if (replybuf[0] != 0x0d) {
printf("\n Ошибка получения версии протокола\n");
return;
}
@ -481,7 +485,7 @@ printf("\n Версия протокола: %s",replybuf+2);
iolen=send_cmd(cmd_getproduct,1,replybuf);
printf("\n Идентификатор устройства: %s",replybuf+2);
if (iolen>2) printf("\n Идентификатор устройства: %s",replybuf+2);
printf("\n----------------------------------------------------\n");
@ -497,7 +501,11 @@ for(part=0;part<npart;part++) {
*((unsigned int*)&cmd_dload_init[5])=htonl(ptable[part].size);
// отсылаем команду
iolen=send_cmd(cmd_dload_init,12,replybuf);
if ((iolen == 0) || (replybuf[1] != 2)) {
if (iolen == 0) {
printf("\n Нет ответа на команду открытия раздела\n");
return;
}
if (replybuf[1] != 2) {
printf("\n Заголовок раздела не принят, код ошибки = %02x %02x %02x\n",replybuf[1],replybuf[2],replybuf[3]);
// dump(cmd_dload_init,13,0);
return;
@ -523,9 +531,12 @@ if (nflag)
*(unsigned short*)&cmd_data_packet[5]=htons(blksize); // размер блока
fread(cmd_data_packet+7,1,blksize,in); // читаем очередной кусок раздела в буфер команды
iolen=send_cmd(cmd_data_packet,blksize+7,replybuf); // отсылаем команду
if ((iolen == 0) || (replybuf[1] != 2)) {
if (iolen == 0) {
printf("\n Нет ответа на команду записи блока # %i\n",blk);
return;
}
if (replybuf[1] != 2) {
printf("\n Блок %i раздела не принят, код ошибки = %02x %02x %02x\n",blk,replybuf[1],replybuf[2],replybuf[3]);
// (cmd_data_packet,blksize+7,0);
return;
}
}
@ -537,10 +548,13 @@ if (nflag)
*((unsigned int*)&cmd_dload_end[1])=htonl(ptable[part].size);
*((unsigned int*)&cmd_dload_end[8])=htonl(ptable[part].code);
iolen=send_cmd(cmd_dload_end,23,replybuf); // отсылаем команду
if ((iolen == 0) || (replybuf[1] != 2)) {
if (iolen == 0) {
printf("\n ! Нет ответа от модема при закрытия раздела\n");
return;
}
if (replybuf[1] != 2) {
printf("\n ! Ошибка закрытия раздела, код ошибки = %02x %02x %02x\n",replybuf[1],replybuf[2],replybuf[3]);
// dump(replybuf,iolen,0);
// return;
return;
}
}

@ -1 +1 @@
111
114

Loading…
Cancel
Save