|
CodexPadFrameDecoder Arduino 库 1.0.0
|
robust_frame 协议帧解析器。 更多...
#include <robust_frame.h>
Public 类型 | |
| using | FrameCallback = void (*)(const uint8_t *data, void *user_data) |
| 帧解析回调函数类型。 | |
Public 成员函数 | |
| Parser (const size_t max_payload_size, FrameCallback callback, void *user_data) | |
| 构造函数,根据最大载荷长度动态分配内部缓冲区。 | |
| ~Parser () | |
| 析构函数,释放内部动态分配的缓冲区。 | |
| void | Feed (const uint8_t byte) |
| 处理单个字节的核心状态机。 | |
robust_frame 协议帧解析器。
负责帧同步、转义还原和 CRC 校验,通过回调输出完整的有效载荷。 不依赖任何特定通信方式,仅需通过 Feed() 逐字节喂入数据。 最大载荷长度由构造函数参数指定,内部缓冲区按需动态分配。
在文件 robust_frame.h 第 32 行定义.
| using robust_frame::Parser::FrameCallback = void (*)(const uint8_t *data, void *user_data) |
帧解析回调函数类型。
| data | 有效载荷数据指针(不含帧头帧尾和 CRC)。 |
| user_data | 用户自定义上下文指针,由构造函数传入,在回调中原样返回。 |
在文件 robust_frame.h 第 46 行定义.
| robust_frame::Parser::Parser | ( | const size_t | max_payload_size, |
| FrameCallback | callback, | ||
| void * | user_data ) |
构造函数,根据最大载荷长度动态分配内部缓冲区。
| [in] | max_payload_size | 最大有效载荷长度(字节数),不含 CRC。 内部实际分配的缓冲区大小为 max_payload_size + 1, 额外 1 字节用于存储 CRC 校验值。 |
| [in] | callback | 帧解析成功时的回调函数(若为 nullptr 则不回调)。 |
| [in] | user_data | 回调时传入的用户自定义上下文指针(通常传 this 指针)。 |
在文件 robust_frame.cpp 第 23 行定义.
| robust_frame::Parser::~Parser | ( | ) |
析构函数,释放内部动态分配的缓冲区。
在文件 robust_frame.cpp 第 27 行定义.
| void robust_frame::Parser::Feed | ( | const uint8_t | byte | ) |
处理单个字节的核心状态机。
| [in] | byte | 输入的字节。 |
状态转换图:
在文件 robust_frame.cpp 第 31 行定义.