API REFERENCE / ERROR CODES
错误码参考
本节列出 SDK 公共错误码的定义。所有错误码集中在 im_error.h 中,由 error_code_t 统一承载,LL、HAL 和 middleware 的公共 API 共用同一套取值。
OVERVIEW
错误码概览
可能失败的操作型公共 API 优先返回
error_code_t;IM_OK(0)表示成功,其余值表示失败原因。判断结果时直接与枚举值比较,例如
ret != IM_OK;不要使用-1、0、1这类无语义魔法值表达复杂结果。IM_ERR_CODE_LAST是范围哨兵,仅用于错误码合法性判断和遍历边界,不作为接口返回值。错误处理的通用约定(何时返回错误码、参数校验顺序、断言的使用)见「API 约定」的「错误处理」一节。
REFERENCE
公共错误码
下表按 im_error.h 中的枚举顺序列出全部公共错误码:
| 值 | 错误码 | 说明 |
|---|---|---|
| 0 | IM_OK | 操作成功完成。 |
| 1 | IM_ERR_INVALID_PARAM | 输入、配置或期望值校验失败。 |
| 2 | IM_ERR_NOT_READY | 所需资源或子系统尚未就绪。 |
| 3 | IM_ERR_TIMEOUT | 操作超时。 |
| 4 | IM_ERR_BUSY | 资源忙。 |
| 5 | IM_ERR_NO_MEMORY | 内存分配失败。 |
| 6 | IM_ERR_NOT_FOUND | 未找到请求的对象。 |
| 7 | IM_ERR_ALREADY_EXISTS | 请求的对象已存在。 |
| 8 | IM_ERR_UNSUPPORTED | 功能或请求不受支持。 |
| 9 | IM_ERR_ALREADY_REGISTERED | 资源已被注册。 |
| 10 | IM_ERR_IO | 底层 I/O 操作失败。 |
| 11 | IM_ERR_BAD_FILE | 文件描述符或文件句柄无效。 |
| 12 | IM_ERR_NO_DEVICE | 设备不存在。 |
| 13 | IM_ERR_PERMISSION_DENIED | 访问策略不允许该操作。 |
| 14 | IM_ERR_CROSS_DEVICE | 源和目标位于不同设备。 |
| 15 | IM_ERR_NOT_DIRECTORY | 路径组件不是目录。 |
| 16 | IM_ERR_IS_DIRECTORY | 路径指向目录。 |
| 17 | IM_ERR_NO_SPACE | 目标设备没有剩余空间。 |
| 18 | IM_ERR_ILLEGAL_SEEK | 对目标的 seek 操作无效。 |
| 19 | IM_ERR_READ_ONLY | 目标为只读。 |
| 20 | IM_ERR_NOT_TTY | 目标不是 TTY 设备。 |
| 21 | IM_ERR_UNKNOWN | 底层子系统返回了未预期的错误。 |
| 22 | IM_ERR_HARDWARE | 硬件报告了错误状态。 |
| 23 | IM_ERR_INVALID_STATE | 软件对象或操作处于无效状态。 |
| 24 | IM_ERR_CODE_LAST | 最后一个有效公共错误码;哨兵值,仅用于范围判断。 |
USAGE
使用与扩展
模块需要向调用方传递更细的失败原因时,优先通过输出参数、结果结构体或日志补充,不在各模块内自行定义新的错误码段。
新增公共错误码时追加在
IM_ERR_CODE_LAST之前,并保持该哨兵始终是最后一个枚举项。枚举数值属于实现细节:SDK 保持错误码的源代码级别兼容(名称与语义稳定),但不保证二进制兼容,基于旧版本预编译的库可能因数值变化而失效。