# OneMessage **Repository Path**: ding-jiuqiang/one-message ## Basic Information - **Project Name**: OneMessage - **Description**: 一个基于发布-订阅模型的多线程消息框架,用于嵌入式平台,纯C实现,性能和灵活性极高 - **Primary Language**: C - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 38 - **Created**: 2022-03-23 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OneMessage 一个基于`发布-订阅`模型的多线程消息框架,用于嵌入式平台,纯C实现,性能和灵活性极高。 --- --- ## 硬件支持 已在linux,STM32F103,STM32F407上成功运行,欢迎适配到其他平台。 * 简单示例 * [example for linux(use cmake)](https://gitee.com/jiu-xiao/msg-example.git) * [example for f103(use makefile)](https://gitee.com/jiu-xiao/om-example-mcu.git) * 使用本框架的开源项目 * [青岛大学Robomaster机器人嵌入式开源](https://gitee.com/qdu-rm-2022/qdu-rm-mcu) ## 特性 * 发布-订阅 * 话题为操作的主体,支持多发布者和多订阅者 * 话题可以作为话题的订阅者和发布者 * 可实现消息的分流/汇集/桥接 * 消息过滤器 * 支持为每个话题和订阅者注册过滤器,只接受符合条件的消息 * 订阅部署 * 可为订阅者注册部署函数,自动解析收到的消息。 * 自动发布 * 可为话题注册更新检查函数,由OneMessage自动检测并发布。 * 快速配置 * 使用格式化输入的方式加载配置,使用较少的代码就能实现整个网络的搭建 * 批量筛选 * 对于条件简单且分支较多的话题,可开启高级过滤器而不需要注册大量函数,现已支持`列表`、`范围`、`分解`模式。 * 日志 * 使用示例程序打印的日志:![效果](img/log.png) ------- ## 获取源码 克隆这个仓库 ``` git clone https://gitee.com/jiu-xiao/one-message.git ``` 或者使用`git submodule`将其包含在你的仓库中 ``` git submodule add https://gitee.com/jiu-xiao/one-message.git ``` ## 代码结构 ``` OneMessage ├─config ├─src │ ├─app │ ├─comp │ └─core └─test ``` **** | 文件夹 | 功能 | | -------- | ------------ | | config | 配置文件模板 | | doc | 文档 | | src/app | 应用 | | src/comp | 组件 | | src/core | 核心api | | src | 用户接口 | | test | 单元测试 | | example | 例程 | **** ## 文档 > [配置文件](doc/config.md) > [使用说明](doc/user.md) > [开发文档](doc/dev.md) ## 这个项目的意义 在复杂的工程中,为了实现线程的通信和数据的同步会耗费掉大量的开发时间,但往往bug都会出现在这些地方,所以需要找到一个稳定可靠的方案。OneMessage即是解决这个问题的一次尝试。