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 中的枚举顺序列出全部公共错误码:

值错误码说明
0IM_OK操作成功完成。
1IM_ERR_INVALID_PARAM输入、配置或期望值校验失败。
2IM_ERR_NOT_READY所需资源或子系统尚未就绪。
3IM_ERR_TIMEOUT操作超时。
4IM_ERR_BUSY资源忙。
5IM_ERR_NO_MEMORY内存分配失败。
6IM_ERR_NOT_FOUND未找到请求的对象。
7IM_ERR_ALREADY_EXISTS请求的对象已存在。
8IM_ERR_UNSUPPORTED功能或请求不受支持。
9IM_ERR_ALREADY_REGISTERED资源已被注册。
10IM_ERR_IO底层 I/O 操作失败。
11IM_ERR_BAD_FILE文件描述符或文件句柄无效。
12IM_ERR_NO_DEVICE设备不存在。
13IM_ERR_PERMISSION_DENIED访问策略不允许该操作。
14IM_ERR_CROSS_DEVICE源和目标位于不同设备。
15IM_ERR_NOT_DIRECTORY路径组件不是目录。
16IM_ERR_IS_DIRECTORY路径指向目录。
17IM_ERR_NO_SPACE目标设备没有剩余空间。
18IM_ERR_ILLEGAL_SEEK对目标的 seek 操作无效。
19IM_ERR_READ_ONLY目标为只读。
20IM_ERR_NOT_TTY目标不是 TTY 设备。
21IM_ERR_UNKNOWN底层子系统返回了未预期的错误。
22IM_ERR_HARDWARE硬件报告了错误状态。
23IM_ERR_INVALID_STATE软件对象或操作处于无效状态。
24IM_ERR_CODE_LAST最后一个有效公共错误码;哨兵值,仅用于范围判断。

USAGE

使用与扩展

  • 模块需要向调用方传递更细的失败原因时,优先通过输出参数、结果结构体或日志补充,不在各模块内自行定义新的错误码段。

  • 新增公共错误码时追加在 IM_ERR_CODE_LAST 之前,并保持该哨兵始终是最后一个枚举项。

  • 枚举数值属于实现细节:SDK 保持错误码的源代码级别兼容(名称与语义稳定),但不保证二进制兼容,基于旧版本预编译的库可能因数值变化而失效。