Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
在你之后
rt-thread
提交
da0c8a6d
R
rt-thread
项目概览
在你之后
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
da0c8a6d
编写于
1月 10, 2023
作者:
哈哈哈可是开电脑
提交者:
mysterywolf
1月 22, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[Ymodem]sy命令支持绝对路径传输
* 接收错误流程优化
上级
3a5d1c17
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
57 addition
and
31 deletion
+57
-31
components/utilities/ymodem/ry_sy.c
components/utilities/ymodem/ry_sy.c
+22
-1
components/utilities/ymodem/ymodem.c
components/utilities/ymodem/ymodem.c
+35
-30
未找到文件。
components/utilities/ymodem/ry_sy.c
浏览文件 @
da0c8a6d
...
...
@@ -30,6 +30,16 @@ struct custom_ctx
char
fpath
[
DFS_PATH_MAX
];
};
static
const
char
*
_get_path_lastname
(
const
char
*
path
)
{
char
*
ptr
;
if
((
ptr
=
(
char
*
)
strrchr
(
path
,
'/'
))
==
NULL
)
return
path
;
/* skip the '/' then return */
return
++
ptr
;
}
static
enum
rym_code
_rym_recv_begin
(
struct
rym_ctx
*
ctx
,
rt_uint8_t
*
buf
,
...
...
@@ -125,7 +135,18 @@ static enum rym_code _rym_send_begin(
rt_kprintf
(
"error open file.
\n
"
);
return
RYM_ERR_FILE
;
}
rt_sprintf
((
char
*
)
buf
,
"%s%c%d"
,
(
char
*
)
&
(
cctx
->
fpath
[
1
]),
insert_0
,
file_buf
.
st_size
);
const
char
*
fdst
=
_get_path_lastname
(
cctx
->
fpath
);
if
(
fdst
!=
cctx
->
fpath
)
{
fdst
=
dfs_normalize_path
(
RT_NULL
,
fdst
);
if
(
fdst
==
RT_NULL
)
{
return
RYM_ERR_FILE
;
}
}
rt_sprintf
((
char
*
)
buf
,
"%s%c%d"
,
fdst
,
insert_0
,
file_buf
.
st_size
);
return
RYM_CODE_SOH
;
}
...
...
components/utilities/ymodem/ymodem.c
浏览文件 @
da0c8a6d
/*
* COPYRIGHT (C) 2011-202
2
, Real-Thread Information Technology Ltd
* COPYRIGHT (C) 2011-202
3
, Real-Thread Information Technology Ltd
* All rights reserved
*
* SPDX-License-Identifier: Apache-2.0
...
...
@@ -362,7 +362,7 @@ static rt_err_t _rym_do_trans(struct rym_ctx *ctx)
_rym_putchar
(
ctx
,
RYM_CODE_ACK
);
_rym_putchar
(
ctx
,
RYM_CODE_C
);
ctx
->
stage
=
RYM_STAGE_ESTABLISHED
;
rt_size_t
errors
;
rt_size_t
errors
=
0
;
while
(
1
)
{
...
...
@@ -374,16 +374,25 @@ static rt_err_t _rym_do_trans(struct rym_ctx *ctx)
RYM_WAIT_PKG_TICK
);
switch
(
code
)
{
case
RYM_CODE_SOH
:
data_sz
=
128
;
break
;
case
RYM_CODE_STX
:
data_sz
=
1024
;
break
;
case
RYM_CODE_EOT
:
return
RT_EOK
;
default:
return
-
RYM_ERR_CODE
;
case
RYM_CODE_SOH
:
data_sz
=
128
;
break
;
case
RYM_CODE_STX
:
data_sz
=
1024
;
break
;
case
RYM_CODE_EOT
:
return
RT_EOK
;
default:
errors
++
;
if
(
errors
>
RYM_MAX_ERRORS
)
{
return
-
RYM_ERR_CODE
;
/* Abort communication */
}
else
{
_rym_putchar
(
ctx
,
RYM_CODE_NAK
);
/* Ask for a packet */
continue
;
}
};
err
=
_rym_trans_data
(
ctx
,
data_sz
,
&
code
);
...
...
@@ -404,21 +413,22 @@ static rt_err_t _rym_do_trans(struct rym_ctx *ctx)
{
errors
=
0
;
}
switch
(
code
)
{
case
RYM_CODE_CAN
:
/* the spec require multiple CAN */
for
(
i
=
0
;
i
<
RYM_END_SESSION_SEND_CAN_NUM
;
i
++
)
{
_rym_putchar
(
ctx
,
RYM_CODE_CAN
);
}
return
-
RYM_ERR_CAN
;
case
RYM_CODE_ACK
:
_rym_putchar
(
ctx
,
RYM_CODE_ACK
);
break
;
default:
// wrong code
break
;
case
RYM_CODE_CAN
:
/* the spec require multiple CAN */
for
(
i
=
0
;
i
<
RYM_END_SESSION_SEND_CAN_NUM
;
i
++
)
{
_rym_putchar
(
ctx
,
RYM_CODE_CAN
);
}
return
-
RYM_ERR_CAN
;
case
RYM_CODE_ACK
:
_rym_putchar
(
ctx
,
RYM_CODE_ACK
);
break
;
default:
// wrong code
break
;
};
}
}
...
...
@@ -586,11 +596,6 @@ static rt_err_t _rym_do_recv(
while
(
1
)
{
err
=
_rym_do_trans
(
ctx
);
if
(
err
!=
RT_EOK
)
{
rt_free
(
ctx
->
buf
);
return
err
;
}
err
=
_rym_do_fin
(
ctx
);
if
(
err
!=
RT_EOK
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录