总的开发分成若干部分:
本章主要描述如何开发一个lua模块
分成几个必要的部分
产出物
文档的基本模板
# 标题
## 基本信息
## 为什么写这个功能 -- 实现什么功能
## 设计边界有哪些 -- 做什么, 不做什么
## Lua API -- 暴露给lua代码的api设计成怎样, 最好提供设想的代码
## C API -- 抽象平台层, 封装一下
Lua API, 是暴露给用户lua代码调用的API, 负责读取用户参数, 校验参数, 整理返回值.
通常分3种: 纯lua, 部分lua部分c, 纯c
当前我们设计和实现, 一般是纯C的实现, 它类似这样
int luat_lib_sys_run(Lua_State *L) {
luaL_checkXXX ; // 取参数
lua_sys_xxx ; // 调用C API
luaL_pushXXXX ; // 把返回值压入堆栈
return 2; // 返回值的个数
}
然后配套一个注册函数, 这个可以参考lua内置库, 例如 lmathlib.c
要求:
要求:
通过不需要传递Lua_State *L, 而是传递一个参数列表或数据结构
int luat_gpio_setup(luat_gpio_t conf) {
//平台相关的实现...
return 0; // ok or not
}