客制化AT 开发指导_Rev1.2

English

修订记录

版本

日期

作者

审核

修订内容

Rev1.0

2023-09-11

lxh

zlc

创建文档

Rev1.1

2024-03-25

sxx

更改文档名称

Rev1.2

2024-10-25

LJZ

修改文档格式

1 简介

本文档介绍 LTE-EC71X OpenCPU如何添加自定义AT指令的功能。

2 API 函数概览

函数

说明

liot_open_atcmd_init()

该函数用于AT功能的打开。

liot_atcmd_register()

该函数用于注册AT table表。

liot_atcmd_reply()

该指接口为AT的返回函数

3 类型说明

3.1 liot_atCmdType_t

AT指令类型。

  1. 声明

typedef enum
{
    LIOT_AT_CMD_SET  = NA | EQ | AR,
    LIOT_AT_CMD_TEST = NA | EQ | QU,
    LIOT_AT_CMD_READ = NA | QU,
    LIOT_AT_CMD_EXE  = NA
} liot_atCmdType_t;
  1. 参数

  • LIOT_AT_CMD_SET  :AT指令的设置。

  • LIOT_AT_CMD_TEST :AT指令的示例。

  • LIOT_AT_CMD_READ :AT指令的读取。

  • LIOT_AT_CMD_EXE  :AT指令的执行。

以下这段文字

3.2 liot_atcmd_basic_type_e

AT指令的基本索引类型:

  1. 声明

typedef enum
{
    LIOT_AT_BASIC_N_C_IDX = 0,
    LIOT_AT_BASIC_N_D_IDX,
    LIOT_AT_BASIC_N_E_IDX,
    LIOT_AT_BASIC_N_F_IDX,
    LIOT_AT_BASIC_N_S_IDX,
    LIOT_AT_BASIC_N_V_IDX,
    LIOT_AT_BASIC_N_W_IDX,
    LIOT_AT_BASIC_E_IDX,
    LIOT_AT_BASIC_I_IDX,
    LIOT_AT_BASIC_L_IDX,
    LIOT_AT_BASIC_M_IDX,
    LIOT_AT_BASIC_Q_IDX,
    LIOT_AT_BASIC_V_IDX,
    LIOT_AT_BASIC_X_IDX,
    LIOT_AT_BASIC_Z_IDX,
    LIOT_AT_BASIC_T_IDX,
    LIOT_AT_BASIC_P_IDX,
} liot_atcmd_basic_type_e;

3.3 liot_at_result_enum_type

AT指令的返回类型:

  1. 声明

typedef enum
{
    LIOT_AT_NO_RSP     = -1,
    LIOT_AT_OK         = 0,
    LIOT_AT_CONNECT    = 1,
    LIOT_AT_RING       = 2,
    LIOT_AT_NO_CARRIER = 3,
    LIOT_AT_ERROR      = 4,

    LIOT_AT_CME_ERROR = 100,
} liot_at_result_enum_type;
  1. 参数

  • LIOT_AT_NO_RSP:AT指令无响应。

  • LIOT_AT_OK:AT指令响应成功。

  • LIOT_AT_CONNECT: AT指令继续执行

  • LIOT_AT_RING: AT指令正在执行

  • LIOT_AT_ERROR:AT指令错误

  • LIOT_AT_CME_ERROR:AT指令执行错误

3.4 liot_atCommand_Input

AT指令的输入参数:

  1. 声明

typedef struct liot_atCommand_Input_t
{
    CHAR name[LIOT_AT_CMD_NAME_MAX_LEN + 1];
    UINT8 op;
    liot_atHandle atHandle;
    UINT8 args_count;
    CHAR *arg[LIOT_AT_CMD_MAX_ARG];
} liot_atCommand_Input;
  1. 参数

类型

参数

描述

CHAR

name

AT指令名

UINT8

op

AT指令执行类型,参照4.1

liot_atHandle

atHandle

AT执行句柄

UINT8

args_count

参数个数

CHAR *

arg

指令参数内容

3.5 liot_atCommand

AT指令格式的声明定义:

  1. 声明

typedef struct liot_atCommand_t
{
    const CHAR *pName;
    liot_at_result_enum_type (*atProcFunc)(const liot_atCommand_Input *pAtInputCtx);
} liot_atCommand, *liot_atCommandP;
  1. 参数

类型

参数

描述

const CHAR*

pName

AT指令名

liot_at_result_enum_type

atProcFunc

AT函数名称

3.6 liot_atMsgId_e

AT指令消息ID类型的枚举定义如下:

  1. 声明

typedef enum
{
    LIOT_AT_MIN_MSG = 0,

    LIOT_AT_URC_MSG,
    LIOT_AT_SIO_MSG,

    LIOT_AT_SIM_MSG,

    LIOT_AT_FILE_MSG,

    LIOT_AT_SOCKET_MSG,
    LIOT_AT_NTP_MSG,
    LIOT_AT_PING_MSG,
    LIOT_AT_HTTP_MSG,
    LIOT_AT_CTCC_SREG_MSG,
    LIOT_AT_FTP_MSG,
    LIOT_AT_MQTT_MSG,
    LIOT_AT_LBS_MSG,
    LIOT_AT_LWM2M_MSG,
    LIOT_AT_CMCC_DM_MSG,
    LIOT_AT_CTWING_MSG,
    LIOT_AT_PDP_MSG,
    LIOT_AT_DNS_MSG,
    LIOT_AT_MAX_MSG
} liot_atMsgId_e;
  1. 参数

  • LIOT_AT_MIN_MSG :最小消息ID。

  • LIOT_AT_URC_MSG:AT指令的URC消息ID。

  • LIOT_AT_SIO_MSG:  IO的消息ID

  • LIOT_AT_SIM_MSG:  SIM卡的消息ID

  • LIOT_AT_FILE_MSG:文件系统的消息ID

  • LIOT_AT_SOCKET_MSG:  socket消息ID

  • LIOT_AT_NTP_MSG: NTP消息ID

  • LIOT_AT_PING_MSG: PING消息ID

  • LIOT_AT_CTCC_SREG_MSG: 电信自注册消息ID

  • LIOT_AT_FTP_MSG: FTP消息ID

  • LIOT_AT_HTTP_MSG: FTP消息ID

  • LIOT_AT_MQTT_MSG: MQTT消息ID

  • LIOT_AT_LBS_MSG:LBS消息ID

  • LIOT_AT_LWM2M_MSG: LWM2M消息ID

  • LIOT_AT_CMCC_DM_MSG: 移动自注册消息ID

  • LIOT_AT_CTWING_MSG: CTWING消息ID

  • LIOT_AT_PDP_MSG: PDP消息ID

  • LIOT_AT_DNS_MSG: DNS消息ID

  • LIOT_AT_MAX_MSG: 最大消息ID

4 API 函数详解

4.1 liot_atcmd_reply

该函数用于返回AT指令执行后的结果,将结果以及错误码返回到串口。

  1. 声明

int liot_atcmd_reply(liot_atHandle atHandle, liot_at_result_enum_type result_code, const CHAR *resp_str);
  1. 参数

  • liot_atHandle :[In] AT指令句柄。

  • result_code:[In] AT指令执行结果码。

  • resp_str:[In] 返回字符串信息。

  1. 返回值

  • int :执行结果码,请参考 4.2。

4.2 liot_open_atcmd_init

该函数用于初始化 及使能AT指令表。

  1. 声明

void liot_open_atcmd_init(void)
  1. 参数

  • void 。

  1. 返回值

  • void 。

4.3 liot_atcmd_register

该函数用于注册AT指令表。

  1. 声明

void liot_atcmd_register(const liot_atCommandP tab_ptr, const UINT32 tab_size);
  1. 参数

  • tab_ptr:[In] AT指令表地址。

  • tab_size:[In] AT指令表的大小。

  1. 返回值

  • void 。

需求

5 代码示例

  1. 示例代码参考 examples/demo/src/demo_atcmd.c。如下运行结果则说明获取所有信息正常:

_images/customer-at-guide/image_1.png

其他问题