# y_protocol **Repository Path**: northqd2018/y_protocol ## Basic Information - **Project Name**: y_protocol - **Description**: 一种用于嵌入式设备间的简单通信协议 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-23 - **Last Updated**: 2024-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## y_protocol ### 1. y_protocol 介绍 一种用于嵌入式设备的简单通信协议,可以方便用于设备芯片间的通信。 ### 2. y_protocol 使用说明 y_protocol 目前包含两个源码文件 y_protocol.c 和 y_protocol.h 文件,使用时无需其他设置。 示例: ```c #include #include #include "y_protocol.h" #include "y_log.h" int main() { // 打印版本号 y_protocol_print_version(); // 打包解包示例 PROTOCOL_MSG_st msg; msg.mod_id = 1; msg.cmd_id = 2; msg.cmd_size = 3; uint8_t buf[4] = {4, 5, 6}; msg.cmd_data = buf; // 打包数据 YLOG_CRLF(); YLOGI("********** pcak msg **********"); uint8_t *send_data; uint16_t send_size; if (y_protocol_pack(PROTOCOL_MSG, &msg, &send_data, &send_size) == true) { YLOG_DATA("pack msg", send_data, send_size); // free(send_data); } // 解包数据 YLOG_CRLF(); YLOGI("********** unpcak msg **********"); PROTOCOL_MSG_st *p_msg; y_protocol_unpack(PROTOCOL_MSG, send_data, send_size, (void **) &p_msg); YLOGI("p_msg->mod_id %d", p_msg->mod_id); YLOGI("p_msg->cmd_id %d", p_msg->cmd_id); YLOGI("p_msg->cmd_size %d", p_msg->cmd_size); YLOG_DATA("p_msg->cmd_data", p_msg->cmd_data, p_msg->cmd_size); // 释放内存 free(p_msg->cmd_data); free(p_msg); free(send_data); return 0; } // 输出结果 [INFO ][0252][ y_protocol_print_version] ----- < y_protocol module version : V0.1.0 > [INFO ][0018][ main] ----- < ********** pcak msg ********** > [DATA ][0022][ main] ----- < pack msg 6 byte : > [DATA ][0022][ main] ----- < 01 02 03 04 05 06 > [INFO ][0029][ main] ----- < ********** unpcak msg ********** > [INFO ][0032][ main] ----- < p_msg->mod_id 1 > [INFO ][0033][ main] ----- < p_msg->cmd_id 2 > [INFO ][0034][ main] ----- < p_msg->cmd_size 3 > [DATA ][0035][ main] ----- < p_msg->cmd_data 3 byte : > [DATA ][0035][ main] ----- < 04 05 06 > ``` ### 3. 依赖 y_protocol 目前依赖于以下代码库 1. [y_log](https://gitee.com/y-cz/y_log.git) :   依赖于 y_log 进行格式日志打印 2. [y_clangformat](https://gitee.com/y-cz/y_clangformat.git) :   依赖于 y_clangformat 保持代码格式统一 ### 4. 版本说明 #### V0.2.1 1. 去掉 一对多 协议 2. 修改断言逻辑为断言宏 #### V0.2.0 1. 修改协议为 一对一 一对多 多对多 三种形式 #### V0.1.5 1. 增加转存接口 2. 增加私有 LORA 协议类型 #### V0.1.4 1. 删除一些未使用的代码 2. 修改断言逻辑 #### V0.1.3 1. 增加协议累加和校验 #### V0.1.2 1. 修改消息长度为两个字节 #### V0.1.1 1. 修复开辟 json 字符串空间时,指针类型错误 #### V0.1.0 1. 实现 简单消息格式 和 json格式 的协议打包、解包功能,预留用户自定义协议的接口。