Browse Source

ymodem TX握手改扫描式等'C',容忍指令回波及"ry: receiving..."打印等杂字节,防止握手误报超时

master
Lizongdi 6 hours ago
parent
commit
ad4745ba9e
  1. 11
      peripheral/ymodem.c

11
peripheral/ymodem.c

@ -304,14 +304,13 @@ static int _rym_do_send_handshake(struct rym_ctx *ctx, int tm_sec)
tm_sec, (unsigned)RYM_CHD_INTV_MS);
for (i = 0; i < (size_t)tm_sec; i++)
{
code = _rym_read_code(ctx, RYM_CHD_INTV_MS);
/* 容忍杂字节扫描: 'C' 之前可能混有对端回波/文本打印 (如发送端 UI
* 自动代发 c:ry(".") 后对端 REPL 的回显和 "ry: receiving ..." 提示),
* 直读会把杂字节逐个烧成超时轮次造成误报 TMO, 见 _rym_read_code_scan 注释 */
const uint8_t ucAccept[1] = { RYM_CODE_C };
code = _rym_read_code_scan(ctx, RYM_CHD_INTV_MS, ucAccept, 1);
if (code == RYM_CODE_C)
break;
if (code != RYM_CODE_NONE)
{
/* 收到别的字节也报出来: 区分"链路完全没数据"与"有数据但不是 'C'" */
log_w("ymodem TX handshake: got 0x%02X while waiting 'C'", (unsigned)code);
}
}
if (i == (size_t)tm_sec)
{

Loading…
Cancel
Save