erpc/erpc设计文档.md

2.3 KiB
Raw Permalink Blame History

CRC16 校验长度为 16-256字节较为合适。

ACK丢了不重发

发送指令流程

1.发送数据后始终要等待ack 2.接收数据后始终要回复ack 3.获得ack不代表指令成功 4.crc校验不成功发送repeat包 5.指令号=端口号

正常传输

host slave
发送指令 等待指令
等待ACK回复 发送ACK
等待指令处理完成 处理指令
等待指令处理完成 发送resp
发送resp_ack 等待resp_ack回复
处理完成 处理完成

指令丢失

host slave
发送指令 等待指令
发送指令丢失 等待指令
超时重发指令 等待指令
等待ACK回复 指令接收成功发送ACK
等待指令处理完成 处理指令
等待指令处理完成 发送resp
发送resp_ack 等待resp_ack回复
处理完成 处理完成

cmd ack 丢失

host slave
发送指令 等待指令
等待ACK回复 指令接收成功发送ACK
超时重发 指令已经开始行发现重发包发送ACK
等待ACK回复 处理指令
等待指令处理完成 处理指令
等待指令处理完成 发送resp
发送resp_ack 等待resp_ack回复
处理完成 处理完成

resp ack 丢失

host slave
发送指令 等待指令
等待ACK回复 发送ACK
等待指令处理完成 处理指令
等待指令处理完成 发送resp
发送resp_ack 等待resp_ack回复
处理完成 发送resp
发送resp_ack 处理完成