AT
AT(Attention)提供 Hayes AT 命令集解析与处理服务,支持注册自定义 AT 命令表、命令执行/设置/读取/测试/查询回调、异步命令结果上报、命令交互处理以及向默认或指定通道输出 AT 响应信息与 URC(Unsolicited Result Code)主动上报。
模块公共头文件
接口清单
| 接口名称 | 功能简述 |
|---|---|
| uapi_at_cmd_table_register | 注册 AT 命令表,将一组 AT 命令实体加入命令链表 |
| uapi_at_cmd_abort_register | 注册当前 AT 命令的打断处理函数及其入参 |
| uapi_at_send_async_result | 发送异步阻塞式 AT 命令的执行结果 |
| uapi_at_interactivity_func_register | 注册 AT 交互命令处理函数 |
| uapi_at_report | 向当前命令所在默认通道输出 AT 打印信息 |
| uapi_at_print | 向默认通道输出格式化 AT 打印信息 |
| uapi_at_report_to_single_channel | 向指定通道输出 AT 打印信息 |
| uapi_at_urc_to_channel | 向指定通道发送 URC 主动上报消息 |
Functions
uapi_at_cmd_table_register
errcode_t uapi_at_cmd_table_register(const at_cmd_entry_t *table, uint32_t len,
uint32_t struct_max_size)
声明头文件
功能说明
- 将由调用方构造的 AT 命令实体表注册到 AT 框架的命令链表中,使表中的 AT 命令可被框架识别与分发。
- 注册过程中记录命令设置函数入参结构体的最大尺寸,供 AT 命令参数解析时统一分配缓冲使用。
- 当开启 CONFIG_AT_SUPPORT_CMD_TABLE_CHECK 配置时,对命令名、命令回调和参数校验语法进行合法性检查,并在命令名重复时返回错误。
前置条件
- 调用时序约束:当前接口必须在 AT 基础接口 uapi_at_base_api_register 成功初始化(提供内存与消息队列等回调)之后调用,否则注册的命令表无法被命令处理流程解析。
- 依赖关系:当前接口依赖 table 指向的命令实体表在调用后仍保持有效,框架仅保存表首地址,不进行内容拷贝。
- 上下文限制:当前接口需在任务上下文调用,禁止在中断上下文调用。
入参
| 名称 | 参数类型 | 说明 | 约束取值范围 |
|---|---|---|---|
| table | at_cmd_entry_t * | AT 命令实体表起始地址,表中每个元素描述一条 AT 命令的名称、命令 ID、属性、参数校验语法及各类型回调 | 不为 NULL,表内各命令 name 成员不为 NULL |
| len | uint32_t | AT 命令实体表中命令条目的数量 | 大于 0 |
| struct_max_size | uint32_t | 命令设置函数入参结构体的最大尺寸,框架会保留历史最大值 | 大于 0 |
返回值
返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC:0 | 执行成功 | 命令表注册成功 |
| ERRCODE_INVALID_PARAM:0x80000001 | 参数无效 | table 为 NULL 或 len 为 0 |
| ERRCODE_MALLOC:0x80000005 | 内存分配失败 | 分配命令链表节点失败 |
| ERRCODE_AT_CMD_REPEAT:0x80003022 | 命令名重复 | 已注册存在同名命令(仅在开启 CONFIG_AT_SUPPORT_CMD_TABLE_CHECK 时检查) |
| ERRCODE_AT_CMD_TABLE_PARA_ERROR:0x80003023 | 命令表参数错误 | 命令名超长或包含非大写字母字符、命令回调全部为空、set 回调存在但 syntax 为空、参数校验语法冲突(仅在开启 CONFIG_AT_SUPPORT_CMD_TABLE_CHECK 时检查) |
参考案例
src/middleware/utils/at/at_wifi_cmd/src/at_cmd_register.csrc/middleware/utils/at/at_plt_cmd/src/at_plt_cmd_register.c
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_AT_SUPPORT_CMD_TABLE_CHECK | 特性宏 | 启用注册时命令表合法性检查分支(分支级;Kconfig 未声明,需构建系统注入) | - |
uapi_at_cmd_abort_register
声明头文件
功能说明
- 注册当前 AT 命令执行过程中使用的打断处理函数及其入参,用于在框架判定需要打断当前命令时回调该函数。
- 注册的函数与入参会覆盖此前注册的当前命令打断函数,框架在执行打断流程时优先调用本接口注册的函数。
- 接口可用性由构建配置控制(见 Kconfig配置)。
前置条件
- 调用时序约束:当前接口必须在 AT 基础接口 uapi_at_base_api_register 成功初始化之后调用,且需在开启 CONFIG_AT_SUPPORT_ASYNCHRONOUS 特性的构建配置下编译。
- 依赖关系:当前接口依赖异步特性已使能,并依赖调用方保证 func 与 arg 在打断发生时仍有效。
- 上下文限制:当前接口需在任务上下文调用,禁止在中断上下文调用。
入参
| 名称 | 参数类型 | 说明 | 约束取值范围 |
|---|---|---|---|
| func | at_abort_func_t | AT 命令打断处理函数指针,框架在打断当前命令时回调,回调返回 at_ret_t 表示打断结果 | 不为 NULL |
| arg | void * | 将打断处理函数的入参直接透传给回调函数 | 调用方自定义 |
返回值
返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC:0 | 执行成功 | 打断处理函数注册成功 |
| ERRCODE_INVALID_PARAM:0x80000001 | 参数无效 | func 为 NULL |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_AT_SUPPORT_ASYNCHRONOUS | 特性宏 | 支持异步打断、异步结果上报与交互命令功能(接口级) | n |
uapi_at_send_async_result
声明头文件
功能说明
- 向 AT 框架发送异步阻塞式 AT 命令的执行结果,由框架在消息处理后输出对应响应。
- 输入 0 表示执行成功,其他值表示失败,框架据此决定后续响应流程。
- 接口可用性由构建配置控制(见 Kconfig配置)。
前置条件
- 调用时序约束:当前接口必须在一个异步阻塞式 AT 命令执行过程中调用,且需在开启 CONFIG_AT_SUPPORT_ASYNCHRONOUS 特性的构建配置下编译。
- 依赖关系:当前接口依赖 AT 消息队列已创建并运行,框架通过消息机制异步处理该结果。
- 上下文限制:当前接口可在命令回调上下文调用,禁止在中断上下文调用。
入参
| 名称 | 参数类型 | 说明 | 约束取值范围 |
|---|---|---|---|
| err | uint16_t | AT 命令执行结果,0 表示成功,其他值表示失败 | 0 ~ 65535 |
返回值
返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC:0 | 执行成功 | 结果消息写入消息队列成功 |
| ERRCODE_AT_MSG_SEND_ERROR:0x80003024 | 消息发送失败 | 结果消息写入消息队列失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_AT_SUPPORT_ASYNCHRONOUS | 特性宏 | 支持异步打断、异步结果上报与交互命令功能(接口级) | n |
uapi_at_interactivity_func_register
声明头文件
功能说明
- 注册 AT 交互命令处理函数,用于在框架进入交互等待状态时回调该函数处理后续交互数据。
- 注册的函数会覆盖此前注册的交互处理函数,框架在交互流程中通过该回调向调用方传递交互数据。
- 接口可用性由构建配置控制(见 Kconfig配置)。
前置条件
- 调用时序约束:当前接口必须在 AT 基础接口 uapi_at_base_api_register 成功初始化之后调用,且需在开启 CONFIG_AT_SUPPORT_ASYNCHRONOUS 特性的构建配置下编译。
- 依赖关系:当前接口依赖异步特性已使能,并依赖调用方保证 func 在交互发生时仍有效。
- 上下文限制:当前接口需在任务上下文调用,禁止在中断上下文调用。
入参
| 名称 | 参数类型 | 说明 | 约束取值范围 |
|---|---|---|---|
| func | at_interactivity_func_t | AT 交互命令处理函数指针,框架在交互过程中回调,回调入参为字符串数据及其长度,回调返回 at_ret_t 表示处理结果 | 不为 NULL |
返回值
返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC:0 | 执行成功 | 交互处理函数注册成功 |
| ERRCODE_INVALID_PARAM:0x80000001 | 参数无效 | func 为 NULL |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_AT_SUPPORT_ASYNCHRONOUS | 特性宏 | 支持异步打断、异步结果上报与交互命令功能(接口级) | n |
uapi_at_report
声明头文件
功能说明
- 向当前命令所在的默认通道输出 AT 打印信息,str 必须以字符串结束符结尾。
- 取当前命令处理上下文对应的通道写回调将字符串发送至对端。
- 同时将该打印信息记录到 AT 日志通道。
入参
| 名称 | 参数类型 | 说明 | 约束取值范围 |
|---|---|---|---|
| str | const char * | AT 打印信息字符串,需携带字符串结束符 | 不为 NULL |
参考案例
src/middleware/utils/at/at_plt_cmd/at/at_plt.csrc/middleware/utils/at/at_wifi_cmd/at/at_ccpriv.csrc/middleware/utils/at/at_wifi_cmd/at/at_mfg.csrc/middleware/utils/at/at_wifi_cmd/at/at_wifi.c
uapi_at_print
声明头文件
功能说明
- 向默认通道输出格式化 AT 打印信息,按 printf 风格的格式串与可变参数生成最终字符串。
- 格式化缓冲区大小由 CONFIG_AT_PRINT_BUFFER_SIZE 配置决定,未配置时使用默认值。
- 格式化失败或参数非法时不输出内容,并在结束时释放缓冲区。
入参
| 名称 | 参数类型 | 说明 | 约束取值范围 |
|---|---|---|---|
| str | const char * | 格式化打印信息字符串,需携带字符串结束符 | 不为 NULL |
| ... | 可变参数 | 与 str 中格式说明符一一对应的可变参数 | 与格式串匹配 |
参考案例
drivers/chips/ws53/porting/uart/uart_porting.cdrivers/chips/ws53/porting/version/version_porting.csrc/middleware/utils/at/at_plt_cmd/at/at_plt.c
uapi_at_report_to_single_channel
声明头文件
功能说明
- 向指定通道输出 AT 打印信息,str 必须以字符串结束符结尾。
- 取该通道注册的写回调将字符串发送至对端。
- 同时将该打印信息记录到 AT 日志通道。
前置条件
- 调用时序约束:当前接口必须在对应该 channel_id 的通道写回调已注册之后调用,否则不会输出内容。
- 依赖关系:当前接口依赖 at_config.h 中定义的 at_channel_id_t 通道号取值有效,且对应通道已使能。
- 上下文限制:当前接口需在任务上下文调用,禁止在中断上下文调用。
入参
| 名称 | 参数类型 | 说明 | 约束取值范围 |
|---|---|---|---|
| channel_id | at_channel_id_t | AT 通道号,取值由 at_config.h 中 at_channel_id_t 枚举定义 | AT_UART_PORT(0); AT_ZDIAG_PORT(1)(仅开启 CONFIG_AT_SUPPORT_ZDIAG 时存在); AT_MAX_PORT_NUMBER 之前的合法值。 |
| str | const char * | AT 打印信息字符串,需携带字符串结束符 | 不为 NULL |
参考案例
src/middleware/utils/at/at_plt_cmd/src/at_plt_cmd_register.csrc/middleware/utils/at/at_wifi_cmd/src/at_cmd_register.c
uapi_at_urc_to_channel
声明头文件
功能说明
- 向指定通道发送 URC 主动上报消息,消息内容与长度由调用方提供。
- 将上报消息加入内部上报队列,并通过消息机制触发框架在处理流程中实际向通道输出。
- 仅当框架支持主动上报特性时此接口对外可用。
前置条件
- 调用时序约束:当前接口必须在 AT 基础接口 uapi_at_base_api_register 成功初始化并已通过消息任务完成主动上报互斥锁初始化之后调用,且需在开启 CONFIG_AT_SUPPORT_NOTIFY_REPORT 特性的构建配置下编译。
- 依赖关系:当前接口依赖 at_config.h 中定义的 at_channel_id_t 通道号取值有效,并依赖内存分配与消息队列机制可用。
- 上下文限制:当前接口需在任务上下文调用,禁止在中断上下文调用。
入参
| 名称 | 参数类型 | 说明 | 约束取值范围 |
|---|---|---|---|
| channel_id | at_channel_id_t | AT 通道号,取值由 at_config.h 中 at_channel_id_t 枚举定义 | AT_UART_PORT(0); AT_ZDIAG_PORT(1)(仅开启 CONFIG_AT_SUPPORT_ZDIAG 时存在); AT_MAX_PORT_NUMBER 之前的合法值。 |
| msg | const char * | 主动上报消息内容起始地址 | 不为 NULL |
| msg_len | uint32_t | 主动上报消息长度,单位 Bytes | 大于 0 |
返回值
返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC:0 | 执行成功 | 上报消息成功加入队列并触发消息发送 |
| ERRCODE_INVALID_PARAM:0x80000001 | 参数无效 | msg 为 NULL 或 msg_len 为 0 |
| ERRCODE_MALLOC:0x80000005 | 内存分配失败 | 分配上报节点或消息字符串缓冲区失败 |
| ERRCODE_AT_MSG_SEND_ERROR:0x80003024 | 消息发送失败 | 消息队列写入失败 |
| ERRCODE_MEMCPY:0x80000004 | 内存拷贝失败 | 拷贝消息内容到缓冲区失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_AT_SUPPORT_NOTIFY_REPORT | 特性宏 | 支持 URC 主动上报功能(接口级) | n |
Type definitions
at_ret_t
// 源码原始定义
typedef enum {
AT_RET_OK = 0,
AT_RET_SYNTAX_ERROR,
AT_RET_MALLOC_ERROR,
AT_RET_MEM_API_ERROR,
AT_RET_CHANNEL_PARA_ERROR,
AT_RET_CHANNEL_NOT_INIT,
AT_RET_CHANNEL_DATA_NULL,
AT_RET_CMD_PARA_ERROR,
AT_RET_CMD_FORMAT_ERROR,
AT_RET_CMD_NO_MATCH,
AT_RET_CMD_TYPE_ERROR,
AT_RET_CMD_IN_PROGRESS_BLOCK,
AT_RET_CMD_ATTR_NOT_ALLOW,
AT_RET_PROC_CMD_FUNC_MISSING,
AT_RET_PROC_READ_FUNC_MISSING,
AT_RET_PROC_TEST_FUNC_MISSING,
AT_RET_PROC_SET_FUNC_MISSING,
AT_RET_PROC_WAIT_INTERACTIVITY,
AT_RET_PROC_ABORT_CURRENT_COMMAND,
AT_RET_PARSE_PARA_ERROR,
AT_RET_PARSE_PARA_MISSING_ERROR,
AT_RET_PROGRESS_BLOCK,
AT_RET_TIMER_ERROR,
AT_RET_ABORT_DELAY
} at_ret_t;
使用说明
本模块对外接口所注册的命令回调函数(at_cmd_func_t、at_set_func_t、at_read_func_t、at_test_func_t、at_query_func_t、at_abort_func_t、at_interactivity_func_t)的返回值类型,用于向 AT 框架反馈命令执行与处理结果。
回调说明:调用时机由 AT 框架在命令分发、参数解析、打断处理或交互处理流程中回调;参数语义由各回调类型签名决定;返回值会被框架在命令处理流程中读取以决定后续响应与状态切换。
at_abort_func_t
使用说明
AT 命令打断处理函数指针类型,作为入参出现于 uapi_at_cmd_abort_register 接口签名中。
回调说明:调用时机为 AT 框架在判定需要打断当前正在执行的命令时回调;参数 arg 为注册打断函数时透传的入参,由调用方自定义语义;返回的 at_ret_t 由框架读取以判断打断是否成功,打断成功时框架会重置命令执行状态。
at_interactivity_func_t
使用说明
AT 命令交互处理函数指针类型,作为入参出现于 uapi_at_interactivity_func_register 接口签名中。
回调说明:调用时机为 AT 框架进入交互等待状态并接收到交互数据时回调;参数 data 为交互数据字符串起始地址,len 为数据长度;返回的 at_ret_t 由框架读取以决定交互结果处理。
at_cmd_func_t
使用说明
AT 命令执行函数指针类型(对应 "AT+TEST" 形式),作为 at_cmd_entry_t 结构体的 cmd 成员类型被 uapi_at_cmd_table_register 间接使用。
at_set_func_t
使用说明
AT 命令设置函数指针类型(对应 "AT+TEST=520" 形式),作为 at_cmd_entry_t 结构体的 set 成员类型被 uapi_at_cmd_table_register 间接使用。回调入参 arg 为框架按命令参数校验语法解析填充的参数结构体指针。
at_read_func_t
使用说明
AT 命令读取函数指针类型(对应 "AT+TEST?" 形式),作为 at_cmd_entry_t 结构体的 read 成员类型被 uapi_at_cmd_table_register 间接使用。
at_test_func_t
使用说明
AT 命令测试函数指针类型(对应 "AT+TEST=?" 形式),作为 at_cmd_entry_t 结构体的 test 成员类型被 uapi_at_cmd_table_register 间接使用。
at_query_func_t
使用说明
AT 命令查询函数指针类型(对应 "AT+TEST?=" 形式),仅当开启 CONFIG_AT_SUPPORT_QUERY 特性时存在,作为 at_cmd_entry_t 结构体的 query 成员类型被 uapi_at_cmd_table_register 间接使用。回调入参 arg 为框架按命令参数校验语法解析填充的参数结构体指针。
at_token_int_range_t
使用说明
基于取值范围的整型参数校验语法结构,作为 at_para_parse_syntax_t 内部联合体的成员类型被 uapi_at_cmd_table_register 间接使用。
at_token_int_list_t
使用说明
基于白名单的整型参数校验语法结构,作为 at_para_parse_syntax_t 内部联合体的成员类型被 uapi_at_cmd_table_register 间接使用。
at_token_string_t
使用说明
基于长度的字符串参数校验语法结构,作为 at_para_parse_syntax_t 内部联合体的成员类型被 uapi_at_cmd_table_register 间接使用。
at_token_string_values_t
使用说明
基于白名单的字符串参数校验语法结构,作为 at_para_parse_syntax_t 内部联合体的成员类型被 uapi_at_cmd_table_register 间接使用。
at_token_bit_string_range_t
使用说明
基于范围值的二进制字符串参数校验语法结构,作为 at_para_parse_syntax_t 内部联合体的成员类型被 uapi_at_cmd_table_register 间接使用。
at_token_bit_string_list_t
使用说明
基于白名单的二进制字符串参数校验语法结构,作为 at_para_parse_syntax_t 内部联合体的成员类型被 uapi_at_cmd_table_register 间接使用。
at_token_hex_string_t
// 源码原始定义
typedef struct {
uint32_t length_field_offset;
uint32_t max_length;
} at_token_hex_string_t;
使用说明
基于长度的十六进制字符串参数校验语法结构,作为 at_para_parse_syntax_t 内部联合体的 octet_string 成员类型被 uapi_at_cmd_table_register 间接使用。
at_syntax_type_t
// 源码原始定义
typedef enum {
AT_SYNTAX_TYPE_INT,
AT_SYNTAX_TYPE_STRING,
AT_SYNTAX_TYPE_BIT_STRING,
AT_SYNTAX_TYPE_OCTET_STRING,
AT_SYNTAX_TYPE_NUM
} at_syntax_type_t;
使用说明
AT 命令参数类型枚举,作为 at_para_parse_syntax_t 结构体的 type 位域的底层类型被 uapi_at_cmd_table_register 间接使用。
at_syntax_attribute_t
// 源码原始定义
typedef enum {
AT_SYNTAX_ATTR_NOT_SUPPORTED = 0x0001,
AT_SYNTAX_ATTR_OPTIONAL = 0x0002,
AT_SYNTAX_ATTR_AT_MIN_VALUE = 0x0004,
AT_SYNTAX_ATTR_AT_MAX_VALUE = 0x0008,
AT_SYNTAX_ATTR_LIST_VALUE = 0x0010,
AT_SYNTAX_ATTR_MAX_LENGTH = 0x0020,
AT_SYNTAX_ATTR_ADD_LENGTH = 0x0040,
AT_SYNTAX_ATTR_FIX_CASE = 0x0080,
AT_SYNTAX_ATTR_LENGTH_FIELD = 0x0100
} at_syntax_attribute_t;
使用说明
AT 命令参数校验属性枚举,作为 at_para_parse_syntax_t 结构体的 attribute 位域的底层类型被 uapi_at_cmd_table_register 间接使用。
at_para_parse_syntax_t
// 源码原始定义
typedef struct {
uint32_t type : 4; /*!< Parameter type(at_syntax_type_t). */
uint32_t last : 1; /*!< Identify whether it is the last parameter. */
uint32_t attribute : 12; /*!< Parameter type(at_syntax_attribute_t). */
uint32_t offset : 15; /*!< Parameter offset of para blob. */
union {
at_token_int_range_t int_range;
at_token_int_list_t int_list;
at_token_string_t string;
at_token_string_values_t string_list;
at_token_bit_string_range_t bit_string_range;
at_token_bit_string_list_t bit_string_list;
at_token_hex_string_t octet_string;
} entry;
} at_para_parse_syntax_t;
使用说明
AT 命令单个参数的校验语法结构,作为 at_cmd_entry_t 结构体的 syntax 成员类型被 uapi_at_cmd_table_register 间接使用,描述参数类型、属性、偏移与具体校验范围或白名单。
at_cmd_entry_t
// 源码原始定义
typedef struct {
const char *name; /*!< The name cannot be duplicate. */
const uint16_t cmd_id; /*!< The cmd_id cannot be duplicate. */
const uint16_t attribute;
const at_para_parse_syntax_t *syntax;
at_cmd_func_t cmd;
at_set_func_t set;
at_read_func_t read;
at_test_func_t test;
#ifdef CONFIG_AT_SUPPORT_QUERY
at_query_func_t query;
#endif
} at_cmd_entry_t;
使用说明
AT 命令实体结构,作为入参出现于 uapi_at_cmd_table_register 接口签名中,描述一条 AT 命令的名称、命令 ID、属性、参数校验语法表及各类型命令回调函数。
errcode_t
使用说明
本模块多个对外接口(uapi_at_cmd_table_register、uapi_at_cmd_abort_register、uapi_at_send_async_result、uapi_at_interactivity_func_register、uapi_at_urc_to_channel)的返回值类型。
Associations
at_para_parse_syntax_t::entry
// 源码原始定义(嵌套于 at_para_parse_syntax_t 的命名成员 entry)
union {
at_token_int_range_t int_range;
at_token_int_list_t int_list;
at_token_string_t string;
at_token_string_values_t string_list;
at_token_bit_string_range_t bit_string_range;
at_token_bit_string_list_t bit_string_list;
at_token_hex_string_t octet_string;
} entry;
| 成员名称 | 类型 | 描述 | 接口使用逻辑 |
|---|---|---|---|
| int_range | at_token_int_range_t | 整型参数取值范围校验项 | 作为 at_para_parse_syntax_t 的 entry 成员被 uapi_at_cmd_table_register 间接使用 |
| int_list | at_token_int_list_t | 整型参数白名单校验项 | 作为 at_para_parse_syntax_t 的 entry 成员被 uapi_at_cmd_table_register 间接使用 |
| string | at_token_string_t | 字符串参数长度校验项 | 作为 at_para_parse_syntax_t 的 entry 成员被 uapi_at_cmd_table_register 间接使用 |
| string_list | at_token_string_values_t | 字符串参数白名单校验项 | 作为 at_para_parse_syntax_t 的 entry 成员被 uapi_at_cmd_table_register 间接使用 |
| bit_string_range | at_token_bit_string_range_t | 二进制字符串参数范围校验项 | 作为 at_para_parse_syntax_t 的 entry 成员被 uapi_at_cmd_table_register 间接使用 |
| bit_string_list | at_token_bit_string_list_t | 二进制字符串参数白名单校验项 | 作为 at_para_parse_syntax_t 的 entry 成员被 uapi_at_cmd_table_register 间接使用 |
| octet_string | at_token_hex_string_t | 十六进制字符串参数长度校验项 | 作为 at_para_parse_syntax_t 的 entry 成员被 uapi_at_cmd_table_register 间接使用 |
Enumerations
at_ret_t
// 源码原始定义
typedef enum {
AT_RET_OK = 0,
AT_RET_SYNTAX_ERROR,
AT_RET_MALLOC_ERROR,
AT_RET_MEM_API_ERROR,
AT_RET_CHANNEL_PARA_ERROR,
AT_RET_CHANNEL_NOT_INIT,
AT_RET_CHANNEL_DATA_NULL,
AT_RET_CMD_PARA_ERROR,
AT_RET_CMD_FORMAT_ERROR,
AT_RET_CMD_NO_MATCH,
AT_RET_CMD_TYPE_ERROR,
AT_RET_CMD_IN_PROGRESS_BLOCK,
AT_RET_CMD_ATTR_NOT_ALLOW,
AT_RET_PROC_CMD_FUNC_MISSING,
AT_RET_PROC_READ_FUNC_MISSING,
AT_RET_PROC_TEST_FUNC_MISSING,
AT_RET_PROC_SET_FUNC_MISSING,
AT_RET_PROC_WAIT_INTERACTIVITY,
AT_RET_PROC_ABORT_CURRENT_COMMAND,
AT_RET_PARSE_PARA_ERROR,
AT_RET_PARSE_PARA_MISSING_ERROR,
AT_RET_PROGRESS_BLOCK,
AT_RET_TIMER_ERROR,
AT_RET_ABORT_DELAY
} at_ret_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| AT_RET_OK | 0 | 执行成功 |
| AT_RET_SYNTAX_ERROR | 1 | 语法错误 |
| AT_RET_MALLOC_ERROR | 2 | 内存分配错误 |
| AT_RET_MEM_API_ERROR | 3 | 内存接口错误 |
| AT_RET_CHANNEL_PARA_ERROR | 4 | 通道参数错误 |
| AT_RET_CHANNEL_NOT_INIT | 5 | 通道未初始化 |
| AT_RET_CHANNEL_DATA_NULL | 6 | 通道数据为空 |
| AT_RET_CMD_PARA_ERROR | 7 | 命令参数错误 |
| AT_RET_CMD_FORMAT_ERROR | 8 | 命令格式错误 |
| AT_RET_CMD_NO_MATCH | 9 | 无匹配命令 |
| AT_RET_CMD_TYPE_ERROR | 10 | 命令类型错误 |
| AT_RET_CMD_IN_PROGRESS_BLOCK | 11 | 命令执行中阻塞 |
| AT_RET_CMD_ATTR_NOT_ALLOW | 12 | 命令属性不允许 |
| AT_RET_PROC_CMD_FUNC_MISSING | 13 | 缺少执行函数 |
| AT_RET_PROC_READ_FUNC_MISSING | 14 | 缺少读函数 |
| AT_RET_PROC_TEST_FUNC_MISSING | 15 | 缺少测试函数 |
| AT_RET_PROC_SET_FUNC_MISSING | 16 | 缺少设置函数 |
| AT_RET_PROC_WAIT_INTERACTIVITY | 17 | 等待交互 |
| AT_RET_PROC_ABORT_CURRENT_COMMAND | 18 | 打断当前命令 |
| AT_RET_PARSE_PARA_ERROR | 19 | 参数解析错误 |
| AT_RET_PARSE_PARA_MISSING_ERROR | 20 | 参数缺失错误 |
| AT_RET_PROGRESS_BLOCK | 21 | 流程阻塞 |
| AT_RET_TIMER_ERROR | 22 | 定时器错误 |
| AT_RET_ABORT_DELAY | 23 | 打断延迟 |
at_syntax_type_t
// 源码原始定义
typedef enum {
AT_SYNTAX_TYPE_INT,
AT_SYNTAX_TYPE_STRING,
AT_SYNTAX_TYPE_BIT_STRING,
AT_SYNTAX_TYPE_OCTET_STRING,
AT_SYNTAX_TYPE_NUM
} at_syntax_type_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| AT_SYNTAX_TYPE_INT | 0 | 整型参数 |
| AT_SYNTAX_TYPE_STRING | 1 | 字符串参数 |
| AT_SYNTAX_TYPE_BIT_STRING | 2 | 二进制字符串参数 |
| AT_SYNTAX_TYPE_OCTET_STRING | 3 | 十六进制字符串参数 |
| AT_SYNTAX_TYPE_NUM | 4 | 参数类型总数 |
at_syntax_attribute_t
// 源码原始定义
typedef enum {
AT_SYNTAX_ATTR_NOT_SUPPORTED = 0x0001,
AT_SYNTAX_ATTR_OPTIONAL = 0x0002,
AT_SYNTAX_ATTR_AT_MIN_VALUE = 0x0004,
AT_SYNTAX_ATTR_AT_MAX_VALUE = 0x0008,
AT_SYNTAX_ATTR_LIST_VALUE = 0x0010,
AT_SYNTAX_ATTR_MAX_LENGTH = 0x0020,
AT_SYNTAX_ATTR_ADD_LENGTH = 0x0040,
AT_SYNTAX_ATTR_FIX_CASE = 0x0080,
AT_SYNTAX_ATTR_LENGTH_FIELD = 0x0100
} at_syntax_attribute_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| AT_SYNTAX_ATTR_NOT_SUPPORTED | 0x0001 | 标识该参数当前不支持 |
| AT_SYNTAX_ATTR_OPTIONAL | 0x0002 | 标识该参数可缺省 |
| AT_SYNTAX_ATTR_AT_MIN_VALUE | 0x0004 | 校验方式为最小值校验 |
| AT_SYNTAX_ATTR_AT_MAX_VALUE | 0x0008 | 校验方式为最大值校验 |
| AT_SYNTAX_ATTR_LIST_VALUE | 0x0010 | 校验方式为白名单校验 |
| AT_SYNTAX_ATTR_MAX_LENGTH | 0x0020 | 校验方式为长度校验 |
| AT_SYNTAX_ATTR_ADD_LENGTH | 0x0040 | 为该参数新增长度字段 |
| AT_SYNTAX_ATTR_FIX_CASE | 0x0080 | 字符串支持大小写混合 |
| AT_SYNTAX_ATTR_LENGTH_FIELD | 0x0100 | 该参数已预设长度字段 |
Structures
at_token_int_range_t
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| min_val | int32_t | 整型参数取值范围下限 |
| max_val | int32_t | 整型参数取值范围上限 |
at_token_int_list_t
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| num | uint32_t | 白名单取值数量 |
| values | const int32_t * | 白名单取值数组起始地址 |
at_token_string_t
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| max_length | uint32_t | 字符串参数最大长度 |
at_token_string_values_t
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| num | uint32_t | 白名单取值数量 |
| values | const uint8_t * const * | 白名单字符串数组起始地址 |
at_token_bit_string_range_t
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| max_value | uint32_t | 二进制字符串参数取值范围上限 |
at_token_bit_string_list_t
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| num | uint32_t | 白名单取值数量 |
| values | const uint32_t * | 白名单取值数组起始地址 |
at_token_hex_string_t
// 源码原始定义
typedef struct {
uint32_t length_field_offset;
uint32_t max_length;
} at_token_hex_string_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| length_field_offset | uint32_t | 标识长度字段的偏移,用于存储十六进制字符串转换后的数据长度 |
| max_length | uint32_t | 十六进制字符串参数最大长度 |
at_para_parse_syntax_t
// 源码原始定义
typedef struct {
uint32_t type : 4; /*!< Parameter type(at_syntax_type_t). */
uint32_t last : 1; /*!< Identify whether it is the last parameter. */
uint32_t attribute : 12; /*!< Parameter type(at_syntax_attribute_t). */
uint32_t offset : 15; /*!< Parameter offset of para blob. */
union {
at_token_int_range_t int_range;
at_token_int_list_t int_list;
at_token_string_t string;
at_token_string_values_t string_list;
at_token_bit_string_range_t bit_string_range;
at_token_bit_string_list_t bit_string_list;
at_token_hex_string_t octet_string;
} entry;
} at_para_parse_syntax_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| type | uint32_t : 4 | 参数类型,取值见 at_syntax_type_t |
| last | uint32_t : 1 | 标识是否为最后一个参数 |
| attribute | uint32_t : 12 | 参数校验属性,取值见 at_syntax_attribute_t |
| offset | uint32_t : 15 | 参数在参数 blob 中的偏移 |
| entry | union | 参数校验范围或白名单联合体,具体成员依 type 与 attribute 选用 |
at_cmd_entry_t
// 源码原始定义
typedef struct {
const char *name; /*!< The name cannot be duplicate. */
const uint16_t cmd_id; /*!< The cmd_id cannot be duplicate. */
const uint16_t attribute;
const at_para_parse_syntax_t *syntax;
at_cmd_func_t cmd;
at_set_func_t set;
at_read_func_t read;
at_test_func_t test;
#ifdef CONFIG_AT_SUPPORT_QUERY
at_query_func_t query;
#endif
} at_cmd_entry_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| name | const char * | AT 命令名称,不可重复,开启命令表检查时需全部由大写字母组成且长度不超过 AT_CMD_NAME_MAX_LENGTH |
| cmd_id | const uint16_t | AT 命令 ID,不可重复 |
| attribute | const uint16_t | AT 命令属性标志 |
| syntax | const at_para_parse_syntax_t * | AT 命令参数校验语法表起始地址,set 回调存在时不可为 NULL |
| cmd | at_cmd_func_t | 执行命令回调函数 |
| set | at_set_func_t | 设置命令回调函数 |
| read | at_read_func_t | 读取命令回调函数 |
| test | at_test_func_t | 测试命令回调函数 |
| query | at_query_func_t | 查询命令回调函数,仅开启 CONFIG_AT_SUPPORT_QUERY 时存在 |