赞
踩
当我们开发软件中间件的时候,由于不想要依赖任何库。那么无论是malloc还是log。我们都希望不依赖任何的sdk。也就是说,这些东西都是可以通过宏进行替换的。在写了很多代码后,大致总结了写中间件的时候常用的功能,构成了这个中间件
这个中间件主要是为了隔离底层的依赖而创立的。所以这个组件里面的东西基本上都能通过宏进行替换。当然如果不去动它,它则会调用标准库的方式实现。当你的sdk对标准库支持不好的时候。比如 stm32 的 printf 就没法直接使用。我们就可以通过配置文件对其底层实现进行替换。
xf_err.h
中我们收集了常用的错误,并通过枚举类型变成错误码。而且错误码对应的错误内容,也可以通过xf_err_to_name.c
中的函数,实现错误码转换成字符串,以便后续打印。xf_bit_def.h
中总结了常用的位操作宏,方便使用。xf_list.h
参考了linux内核中的list.h。修改了其需要gnu特性的地方,让其在c99的环境下仍然可以使用。xf_attr.h
中总结了常用属性xf_predef.h
中。以上功能都是在xf_common文件夹中。除此之外还有:
xf_utils_log
支持不同级别的log,可以通过宏设置屏蔽等级。也支持打印数组功能。底层默认对接printfxf_lcok
是防止出现竞争。竞争常常出现在中断和主函数之间公用了全局变量。或者多线程之间函数不可重入。往往这种情况需要lock功能防止出现竞争. ├── examples # xf_utils linux 使用例程 ├── port # xf_utils linux 移植部分(主要是 lock) ├── src # xf_utils 仓库源码部分 │ ├── xf_check # xf_check 断言检查库 │ │ ├── xf_check_config.h # xf_check 配置文件,每个配置都有注释和默认配置 │ │ └── xf_check.h # xf_check 断言检查相关宏 │ ├── xf_common # xf_common 通用库(比较杂想不到取啥名字好) │ │ ├── xf_attr.h # 常用的属性宏 │ │ ├── xf_bit_defs.h # 位操作相关宏 │ │ ├── xf_common_config.h # xf_common 配置文件,每个配置都有注释和默认配置 │ │ ├── xf_common.h # 收集了其它的头文件,包含在 xf_common.h 内 │ │ ├── xf_err.h # 定义了通用的错误码 │ │ ├── xf_err_to_name.c # 实现了错误码转换字符串功能(方便打印调试) │ │ ├── xf_list.h # 通用双向链表库 │ │ ├── xf_predef.h # 定义了简单实用的宏 │ │ └── xf_version.h # 定义了版本,以及数字/字符串版本号宏 │ ├── xf_lock # 定义了锁,防止出现竞争 │ ├── xf_std # 标准库宏定义,用于随时替换标准库实现 │ ├── xf_utils_log # log库,对接printf,实现等级打印和串口打印 │ ├── xf_utils.h # 统一对外调用的头文件 │ ├── xf_utils_internal_config.h # 内部配置头文件 │ └── xf_utils_port.h # 对接lock的头文件 ├── README.md └── xmake.lua
github: https://github.com/x-eks-fusion/xf_utils
gitee: https://gitee.com/x-eks-fusion/xf_utils
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。