当前位置: 首页 > luatOSMV > LuatOS API 文档编写规范

LuatOS API 文档编写规范

发布于:2025-12-26 luatOSMV 0条评论 71 views

LuatOS 的 API 文档采用特殊注释格式嵌入在 C/Lua 源码中,通过 apiMaker 工具自动解析生成 Markdown 文档和 VSCode 自动补全文件。


一、文档结构概述

文档注释分为两个层级:

层级说明位置
模块级注释描述整个库/模块的基本信息文件开头
API级注释描述单个函数/接口每个函数定义前

二、模块级字段定义

2.1 基本格式

/*
@module  模块名
@summary 模块简介
@version 版本号
@date    日期
@demo    demo路径
@video   视频链接
@tag     BSP标签
@ready   文档完备状态
@usage
-- 使用示例代码
-- 可以多行
*/

2.2 字段说明

字段必填说明示例
@module模块的调用名称,即 Lua 中使用的名字@module adc
@summary模块的简短描述,一句话说明功能@summary 模数转换
@version版本号@version 1.0
@date最后修改日期@date 2025.12.07
@demodemo 示例路径(相对于 demo 目录)@demo adc
@video视频教程链接@video https://xxx
@tagBSP 编译宏标签,用于判断芯片适配状态@tag LUAT_USE_ADC
@ready文档是否完备,True 归入正式文档,否则归入开发中文档@ready True
@notsupported本平台是否支持该模块,True 支持,否则不支持@notsupported True
@usage模块级使用示例,之后的内容直到注释结束都是示例代码见完整示例

三、API级字段定义

3.1 基本格式

/**
函数简介说明
@api 模块名.函数名(参数1, 参数2, ...)
@tag BSP标签(可选)
@参数类型 参数说明
@参数类型[opt=默认值] 可选参数说明
@return 返回类型 返回值说明
@invalid true
@usage
-- 使用示例代码
local result = 模块名.函数名(1, "test")
 */

3.2 字段说明

字段必填说明示例
第一行函数的简短描述打开adc通道
@api函数完整调用签名,包含模块名和参数@api adc.open(id)
@function@api 等价,可替代使用@function adc.open(id)
@tagAPI 级别的 BSP 标签@tag LUAT_USE_ADC
@参数类型输入参数,@ 后跟类型,空格后跟说明@int 通道id,范围0-4
@return返回值,格式:@return 类型 说明@return boolean 成功返回true
@notsupported设为 true 表示此 API 不生成文档@notsupported true
@usage使用示例代码完整示例,可以多行

四、 示例

4.1 模块示例

/*
@module  adc
@summary 模数转换
@version 1.0
@date    2025.12.07
@demo adc
@tag LUAT_USE_ADC
@ready True
@usage

-- 本库可读取硬件adc通道, 也支持读取CPU温度

-- 读取ADC通道, 返回电压值,单位mV
adc.open(0)
local voltage = adc.get(0)  -- 推荐使用get方法,直接获取计算后的电压值
log.info("adc", "ADC0 voltage:", voltage, "mV")
adc.close(0)

-- 读取CPU内部温度, 单位为0.001摄氏度, 是芯片内部温度, 非环境温度
adc.open(adc.CH_CPU)
local temp = adc.get(adc.CH_CPU)
log.info("adc", "CPU temperature:", temp/1000, "C")
adc.close(adc.CH_CPU)

*/

4.2 API示例

/**
打开adc通道
@api adc.open(id)
@int 通道id,范围0-4,共5个通道可用。除此之外,当id为-1时,表示打开CPU内部温度传感器通道
@return boolean 打开结果成功返回1,失败返回0
@usage
-- 打开adc通道4,并读取
if adc.open(4) then
    log.info("adc", adc.read(4)) -- 返回值有2个, 第一个值为原始值,第二个值为经过内部换算的校准后的电压值
    log.info("adc", adc.get(4))  -- 返回值有1个, 仅计算值
end
adc.close(4) -- 关闭端口
 */
static int l_adc_open(lua_State *L) {
    // 实现代码...
}

4.3 常量示例

//@const CH_CPU number CPU内部温度传感器通道,值为-1
{ "CH_CPU",          ROREG_INT(LUAT_ADC_CH_CPU)},

使用 @_notused_const 标记,不会生成到文档中:

//@_notused_const ADC_RANGE_3_6 number ADC分压电阻开启
{ "ADC_RANGE_3_6",   ROREG_INT(1)},

//@_notused_const CH_VBAT number VBAT供电电压通道(ESP32C3不支持)
{ "CH_VBAT",         ROREG_INT(LUAT_ADC_CH_VBAT)},

五、参数类型说明

5.1 支持的类型标记

类型标记Lua 类型说明
@intnumber整数
@numbernumber数值(含小数)
@stringstring字符串
@booleanboolean布尔值
@tabletable
@functionfunction函数/回调
@userdatauserdata用户数据
@anyany任意类型

5.2 可选参数格式

@int[opt=nil] 可选参数,默认值为nil
@table[opt={}] 可选参数,默认值为空表
@string[opt="default"] 可选参数,默认值为"default"

5.3 多返回值

@return int 原始值,可以用_接收 表示忽略
@return int 从原始值换算得出的实际电压值,单位是mV

五、特殊字段汇总

字段作用域说明
@invalid trueAPI标记 API 为无效,不生成文档(用于废弃或内部接口)
@_notused_const常量标记常量为隐藏,不生成文档
@ready True模块标记模块文档已完备,归入正式文档目录;否则归入 api_development 目录

六、Lua库注释格式

Lua 源文件使用 --[[]] 作为注释块标记:

--[[
@module  mylib
@summary 我的库
@version 1.0
@date    2025.12.24
@usage

local mylib = require("mylib")
mylib.test()

]]

--[[
测试函数
@api mylib.test()
@return boolean 成功返回true
@usage
mylib.test()
]]
function mylib.test()
    -- 实现代码
end

七、生成文档

7.1 运行脚本

cd LuatOS/tools/apiMaker
python documentGenerator.py

7.2 输出内容

输出路径说明
正式模块文档api/modules/@ready True 的模块
开发中模块文档api/api_development/@ready 为空或 False 的模块
内置功能库文档api/components/components 目录下的模块
脚本扩展库文档api/libs/script/libs 目录下的模块
VSCode 补全文件snippet.json自动补全配置

附录:数据结构说明

文档解析后生成的数据结构:

modules = [
    {
        'module': 'adc',           # 模块名
        'summary': '模数转换',      # 简要描述
        'location': 'luat/modules/luat_lib_adc.c',  # 源文件路径
        'demo': 'demo/adc',        # 示例代码路径
        'video': '',               # 视频链接
        'usage': '-- 示例代码',    # 用法示例
        'tag': 'LUAT_USE_ADC',     # BSP标签
        'version': '1.0',          # 版本号
        'date': '2025.12.07',      # 日期
        'ready': True,             # 文档完备状态
        'const': [                 # 常量列表
            {
                'var': 'adc.CH_CPU',
                'type': 'number',
                'summary': 'CPU内部温度传感器通道',
            },
        ],
        'api': [                   # API列表
            {
                'api': 'adc.open(id)',
                'summary': '打开adc通道',
                'tag': '',
                'args': [
                    {'type': 'int', 'summary': '通道id,范围0-4'}
                ],
                'return': [
                    {'type': 'boolean', 'summary': '成功返回1,失败返回0'}
                ],
                'usage': '-- 示例代码'
            },
        ]
    }
]

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注