summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorarmink <[email protected]>2014-09-13 11:15:48 +0800
committerarmink <[email protected]>2014-09-13 11:15:48 +0800
commited57c7c32a3642c4512c71a0779bbb6e9780f3ad (patch)
treed0acbd0e1334a246ec8ea403b4f875c5f444613a /components
parent521f24f1093ab3eeeb914648b71ad21d7e0e782d (diff)
[Ymodem]When active end the session, It can config send CAN number.
Diffstat (limited to 'components')
-rw-r--r--components/utilities/ymodem/ymodem.c7
-rw-r--r--components/utilities/ymodem/ymodem.h7
2 files changed, 9 insertions, 5 deletions
diff --git a/components/utilities/ymodem/ymodem.c b/components/utilities/ymodem/ymodem.c
index f5ebeab832..3af1528024 100644
--- a/components/utilities/ymodem/ymodem.c
+++ b/components/utilities/ymodem/ymodem.c
@@ -197,7 +197,7 @@ static rt_err_t _rym_do_trans(struct rym_ctx *ctx)
{
rt_err_t err;
enum rym_code code;
- rt_size_t data_sz;
+ rt_size_t data_sz, i;
code = _rym_read_code(ctx,
RYM_WAIT_PKG_TICK);
@@ -223,8 +223,9 @@ static rt_err_t _rym_do_trans(struct rym_ctx *ctx)
{
case RYM_CODE_CAN:
/* the spec require multiple CAN */
- _rym_putchar(ctx, RYM_CODE_CAN);
- _rym_putchar(ctx, RYM_CODE_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);
diff --git a/components/utilities/ymodem/ymodem.h b/components/utilities/ymodem/ymodem.h
index 43ee6f5c10..d82e76d936 100644
--- a/components/utilities/ymodem/ymodem.h
+++ b/components/utilities/ymodem/ymodem.h
@@ -55,6 +55,9 @@ enum rym_code {
#define RYM_CHD_INTV_TICK (RT_TICK_PER_SECOND * 3)
#endif
+/* how many CAN be sent when user active end the session. */
+#define RYM_END_SESSION_SEND_CAN_NUM 0x07
+
enum rym_stage {
RYM_STAGE_NONE,
/* set when C is send */
@@ -129,7 +132,7 @@ struct rym_ctx
* second.
*/
rt_err_t rym_recv_on_device(struct rym_ctx *ctx, rt_device_t dev,
- rym_callback on_begin, rym_callback on_data, rym_callback on_end,
- int handshake_timeout);
+ rt_uint16_t oflag, rym_callback on_begin, rym_callback on_data,
+ rym_callback on_end, int handshake_timeout);
#endif