|
|
@@ -188,13 +188,13 @@ int ymodem_recv_files(const char *dir)
|
|
|
{
|
|
|
for(i = 0; i < packet_length; i++) { block[i] = packet_data[PACKET_HEADER+i]; }
|
|
|
uart_putchar(ACK);
|
|
|
- sw_log_debug("[%s] <文件: %s, 大小: %u> 收到第%u包数据, 数据包大小: %u", UART_MODULE_NAME, \
|
|
|
+ sw_log_debug("[%s] <文件: %s, 大小: %u> 收到第%u包数据, 数据包大小: %u字节", UART_MODULE_NAME, \
|
|
|
file_name, file_size_val, packets_received, packet_length);
|
|
|
|
|
|
if(!sw_dir_exists(dir)) sw_dir_create(dir);
|
|
|
if(sw_file_update(path, "ab", (char *)block, packet_length) != packet_length) { uart_putchar(CAN); uart_putchar(CAN); serial_close(s_myUart.h, WAITTHRD_SAFEEXIT_TIMEOUT); return -3; }
|
|
|
}
|
|
|
- ++packets_received;
|
|
|
+ ++packets_received; // 累加已接收包数
|
|
|
}
|
|
|
break;
|
|
|
default: // receive error
|
|
|
@@ -202,7 +202,7 @@ int ymodem_recv_files(const char *dir)
|
|
|
uart_putchar(CRC);
|
|
|
}
|
|
|
|
|
|
- if(file_done) break; // 文件接收完毕
|
|
|
+ if(file_done) { if(!session_done) sw_log_info("[%s] 文件: %s 接收完成, 实际大小: %u字节", UART_MODULE_NAME, file_name, sw_file_getSize(path)); break; } // 文件接收完成
|
|
|
}
|
|
|
|
|
|
if(session_done) break; // 传输会话结束
|
|
|
@@ -324,7 +324,7 @@ int ymodem_send_file(const char *path)
|
|
|
comio_data_recv_proc, NULL, NULL);
|
|
|
if(!s_myUart.h) { ret = -5; goto ret_p; }
|
|
|
|
|
|
- retry = 0; do { ch = uart_getchar(PACKET_TIMEOUT); } while(ch != CRC && ++retry < MAX_ERRORS);
|
|
|
+ retry = 0; do { ch = uart_getchar(PACKET_TIMEOUT); } while(ch != CRC && ++retry < 30);
|
|
|
if(ch != CRC) { uart_putchar(CAN); uart_putchar(CAN); ret = -6; goto ret_p; }
|
|
|
|
|
|
retry = 0; do
|
|
|
@@ -338,7 +338,7 @@ int ymodem_send_file(const char *path)
|
|
|
}
|
|
|
else if((ch == CRC) && (crc_nak)) { crc_nak = 0; continue; } // 接收到CRC, 重发一次0包
|
|
|
else if((ch != NAK) || (crc_nak)) { break; } // 接收到NAK, 需要重发一次0包
|
|
|
- } while(++retry < MAX_ERRORS);
|
|
|
+ } while(++retry < MAX_ERRORS && serial_recvThrd_isAlive(s_myUart.h));
|
|
|
|
|
|
ret_p:
|
|
|
if(file_buf) free(file_buf);
|