# Fragment **Repository Path**: su_developer/fragment ## Basic Information - **Project Name**: Fragment - **Description**: 把数据包 分包成N个小包 也可以把N个小包 组成1个大包 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-24 - **Last Updated**: 2025-08-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 该项目旨在实现一个轻量级的分片传输协议,适用于嵌入式系统或资源受限的环境中。该协议支持数据的分片、重组、校验和传输,并提供了灵活的回调机制用于发送和接收数据。 --- ## 📁 项目结构 ``` . ├── .gitignore ├── .vscode/ │ ├── c_cpp_properties.json │ └── settings.json ├── CMakeLists.txt ├── LICENSE ├── inc/ │ ├── Fragment_AppLayer.h │ ├── Fragment_LinkLayer.h │ └── Fragment_TransportLayer.h ├── src/ │ ├── Fragment_AppLayer.c │ ├── Fragment_LinkLayer.c │ └── Fragment_TransportLayer.c └── test.c ``` --- ## 📌 主要功能模块 ### 1. **Fragment_LinkLayer.c** - 提供帧的序列化与解析功能。 - 包含校验和计算、帧序列号生成、帧解析等基础链路层功能。 - 主要函数: - `Fragment_Frame_Serialize` - `Fragment_Frame_Parse` - `Fragment_checksum` - `Fragment_GetSequence` ### 2. **Fragment_TransportLayer.c** - 实现分片传输的核心逻辑,包括分片、重组、发送与接收。 - 支持回调函数注册,用于实际的数据传输。 - 主要函数: - `Fragment_Packet_Split_Init`, `Fragment_Packet_Split` - `Fragment_Packet_Reassemble_Init`, `Fragment_Packet_Reassemble` - `Fragment_Transmitter`, `Fragment_Received` - `Fragment_TransportInit` ### 3. **Fragment_AppLayer.c** - 应用层接口,提供与上层应用交互的函数。 - 目前未列出具体函数,但通常用于封装应用数据的处理逻辑。 --- ## 🧪 测试代码 ### `test.c` - 提供基本的测试用例,验证分片传输的正确性。 - 包含示例回调函数: - `AppProtocol_SendCallback` - `AppProtocol_RecvCmpCallback` - `main` 函数用于初始化并运行测试逻辑。 --- ## 🛠️ 编译与构建 本项目使用 CMake 构建系统。 ### 构建步骤: ```bash mkdir build cd build cmake .. make ``` --- ## 📚 使用示例 ### 初始化传输层并发送数据: ```c void AppProtocol_SendCallback(uint8_t* data, uint16_t length) { // 实现实际的发送逻辑,例如通过串口或网络 } int main() { Fragment_TransportInit(AppProtocol_SendCallback, AppProtocol_RecvCmpCallback); uint8_t testData[] = "Hello, Fragment!"; Fragment_Transmitter(testData, sizeof(testData)); return 0; } ``` --- ## 📎 依赖项 - CMake - C 编译器(如 GCC) --- ## 📄 许可证 本项目使用标准开源许可证(具体请查看 `LICENSE` 文件)。 --- ## 🤝 贡献指南 欢迎提交 PR 或 Issue。请确保代码风格与项目保持一致,并提供清晰的提交信息。 --- ## 📬 联系方式 如有问题,请联系项目维护者或提交 Issue。