数据拨号开发指导_Rev2.0

English

文件修订历史

版本

日期

作者

修订内容

Rev1.0

23-09-15

YPP

创建文档

Rev1.1

24-03-25

sxx

更改文档名称

Rev1.2

24-10-25

LJZ

修改文档格式

Rev1.3

25-04-09

ZW

增加4.16章节,增加接口liot_network_register_cereg_get。

Rev1.4

26-01-09

ZLC

增加4.16章节,新增接口。

Rev2.0

26-03-03

YMX

修改文档格式

1 简介

本文档主要介绍 LTE-EC71X OpenCPU 数据拨号 API 函数详解,API 位于 components/kernel/lierda_api/liot_datacall/liot_datacall.h 文件。

  • 网络注册: liot_network_register_wait(网络注册)是开机后的自动动作,但是如果是专网卡,需要先配置APN,然后再控制开关设备实现网络注册。

  • 拨号激活: liot_start_data_call(拨号)是手动获取业务 IP 的动作,要实现模组与基站之间的数据通讯,必须进行拨号。

  • 默认承载(Default EPS Bearer): Cat.1 模组在附着成功后通常会自动激活 CID 1。

2 API 函数概览

2.1 核心控制

函数

说明

liot_start_data_call()

启动数据拨号

liot_stop_data_call()

终止数据拨号

liot_set_data_call_asyn_mode()

设置启动和终止数据拨号函数的执行模式

liot_datacall_set_nat()

启用 NAT 功能

2.2 状态查询

函数

说明

liot_get_data_call_info()

获取数据拨号信息

liot_datacall_get_sim_profile_is_active()

获取当前 PDP 上下文激活状态

liot_datacall_get_default_pdn_info()

获取默认承载信息

liot_network_register_wait()

等待网络注册结果

liot_network_register_cereg_get()

获取网络注册状态

liot_datacall_get_nat()

查询(U)SIM 卡对应的 NAT模式

Liot_DataCallCfgDefaultEpsBearer()

设置或查询默认承载(CID 1)的 APN 和 IP 类型

2.3 事件处理

函数

说明

liot_datacall_register_cb()

注册数据拨号的回调函数

liot_datacall_unregister_cb()

去注册数据拨号的回调函数

Liot_PsEventCb()

注册系统事件通知回调。

2.4 IP地址工具

函数

说明

liot_ip4addr_ntoa()

IPV4地址转字符串

liot_ip6addr_ntoa()

IPV6地址转字符串

liot_ip4addr_aton()

IPV4字符串转地址

liot_ip6addr_aton()

IPV6字符串转地址

3 API 函数详解

3.1 liot_datacall_register_cb

该函数用于注册数据拨号的回调函数。无论是异步模式还是同步模式,均需注册回调函数用于上报被网络去激活或者去附着的事件,当接收到此事件后可发起重新拨号流程。

  • 声明

    liot_datacall_errcode_e liot_datacall_register_cb(uint8_t nSim, int profile_idx, liot_datacall_callback datacall_cb, void *ctx)
    
  • 参数

    nSim:

    [In] 所用的(U)SIM 卡,若模块只支持 1 个(U)SIM 接口,此参数可设置为 0,取值:0-1或0XFF。

    profile_idx:

    [In] PDP 上下文 ID,范围:1~7或0XFF。

    datacall_cb:

    [In] 待注册的回调函数。详见第 4.1.1 章。

    ctx:

    [In] 回调函数的传参指针。

  • 返回值

详见第 4.1.2 章。

3.1.1 liot_datacall_callback

该回调函数用于上报数据拨号事件。

  • 声明

    typedef void (*liot_datacall_callback)(uint8_t nSim, unsigned int ind_type, int profile_idx, bool result, void *ctx);
    
  • 参数

nSim:

[In] 所用的(U)SIM 卡,若模块只支持 1 个(U)SIM 接口,此参数可设置为 0,取值:0-1或0XFF。

ind_type:

[In] 数据拨号事件类型。

事件

说明

LIOT_DATACALL_ACT_RSP_IND

异步模式下 PDP 激活的结果响应事件

LIOT_DATACALL_DEACT_RSP_IND

异步模式下 PDP 反激活的结果响应事件

LIOT_DATACALL_PDP_DEACTIVE_IND

PDP 被网络去激活或者去附着的事件

profile_idx:

[In] PDP 上下文 ID,范围:1~7或0XFF。

result:

[In] PDP 上下文激活和反激活的结果,0 失败,1 成功。

ctx:

[In] 回调函数的传参指针。

3.1.2 liot_datacall_errcode_e

数据拨号 API 执行结果错误码。

  • 声明

    typedef enum{    
      LIOT_DATACALL_SUCCESS     = 0,
      LIOT_DATACALL_EXECUTE_ERR = 1 | LIOT_DATACALL_ERRCODE_BASE,
      LIOT_DATACALL_MEM_ADDR_NULL_ERR,
      LIOT_DATACALL_INVALID_PARAM_ERR,
      LIOT_DATACALL_NW_REGISTER_TIMEOUT_ERR,
      LIOT_DATACALL_CFW_ACT_STATE_GET_ERR = 5 | LIOT_DATACALL_ERRCODE_BASE,    LIOT_DATACALL_REPEAT_ACTIVE_ERR,
      LIOT_DATACALL_REPEAT_DEACTIVE_ERR,
      LIOT_DATACALL_CFW_PDP_CTX_SET_ERR,
      LIOT_DATACALL_CFW_PDP_CTX_GET_ERR,
      LIOT_DATACALL_CS_CALL_ERR = 10 | LIOT_DATACALL_ERRCODE_BASE,
      LIOT_DATACALL_CFW_CFUN_GET_ERR,
      LIOT_DATACALL_CFUN_DISABLE_ERR,
      LIOT_DATACALL_NW_STATUS_GET_ERR,
      LIOT_DATACALL_NOT_REGISTERED_ERR,
      LIOT_DATACALL_NO_MEM_ERR = 15 | LIOT_DATACALL_ERRCODE_BASE,
      LIOT_DATACALL_CFW_ATTACH_STATUS_GET_ERR,
      LIOT_DATACALL_SEMAPHORE_CREATE_ERR,
      LIOT_DATACALL_SEMAPHORE_TIMEOUT_ERR,
      LIOT_DATACALL_CFW_ATTACH_REQUEST_ERR,
      LIOT_DATACALL_CFW_ACTIVE_REQUEST_ERR = 20 | LIOT_DATACALL_ERRCODE_BASE,
      LIOT_DATACALL_ACTIVE_FAIL_ERR,
      LIOT_DATACALL_CFW_DEACTIVE_REQUEST_ERR,
      LIOT_DATACALL_NO_DFTPDN_CFG_CONTEXT,
      LIOT_DATACALL_NO_DFTPDN_INFO_CONTEXT,
    } liot_datacall_errcode_e;
    
  • 参数

参数

描述

LIOT_DATACALL_SUCCESS

执行成功

LIOT_DATACALL_EXECUTE_ERR

执行失败

LIOT_DATACALL_MEM_ADDR_NULL_ERR

参数地址为空

LIOT_DATACALL_INVALID_PARAM_ERR

参数无效

LIOT_DATACALL_NW_REGISTER_TIMEOUT_ERR

网络注册超时

LIOT_DATACALL_CFW_ACT_STATE_GET_ERR

获取 PDP 上下文激活状态失败

LIOT_DATACALL_REPEAT_ACTIVE_ERR

重复激活 PDP 上下文

LIOT_DATACALL_REPEAT_DEACTIVE_ERR

重复反激活 PDP 上下文

LIOT_DATACALL_CFW_PDP_CTX_SET_ERR

设置 PDP 上下文失败

LIOT_DATACALL_CFW_PDP_CTX_GET_ERR

获取 PDP 上下文失败

LIOT_DATACALL_CS_CALL_ERR

正在通话导致数据业务操作失败

LIOT_DATACALL_CFW_CFUN_GET_ERR

获取功能模式失败

LIOT_DATACALL_CFUN_DISABLE_ERR

非全功能模式导致数据业务操作失败

LIOT_DATACALL_NW_STATUS_GET_ERR

获取网络注册状态失败

LIOT_DATACALL_NOT_REGISTERED_ERR

网络未注册

LIOT_DATACALL_NO_MEM_ERR

申请内存失败

LIOT_DATACALL_CFW_ATTACH_STATUS_GET_ERR

获取网络附着状态失败

LIOT_DATACALL_SEMAPHORE_CREATE_ERR

创建信号量失败

LIOT_DATACALL_SEMAPHORE_TIMEOUT_ERR

等待信号量超时

LIOT_DATACALL_CFW_ATTACH_REQUEST_ERR

网络附着被拒

LIOT_DATACALL_CFW_ACTIVE_REQUEST_ERR

PDP 上下文激活被拒

LIOT_DATACALL_ACTIVE_FAIL_ERR

PDP 上下文激活失败

LIOT_DATACALL_CFW_DEACTIVE_REQUEST_ERR

PDP 上下文去激活被拒

LIOT_DATACALL_NO_DFTPDN_CFG_CONTEXT

未配置默认承载上下文

LIOT_DATACALL_NO_DFTPDN_INFO_CONTEXT

无默认承载上下文信息

3.2 liot_datacall_unregister_cb

该函数用于取消通过 liot_datacall_register_cb() 注册的回调函数。取消后,回调函数将不再接收数据拨号的相关事件。

  • 函数

    liot_datacall_errcode_e liot_datacall_unregister_cb(uint8_t nSim, int profile_idx, liot_datacall_callback datacalliot_cb, void *ctx);
    
  • 参数

    nSim:

    [In] 所用的 (U)SIM 卡,若模块只支持 1 个 (U)SIM 接口,此参数可设置为 0,取值:0-1或0XFF。

    profile_idx:

    [In] PDP 上下文 ID,范围:1~7或0XFF。

    datacall_cb:

    [In] 待注册的回调函数。详见第 4.1.1 章。

    ctx:

    [In] 回调函数的传参指针。

  • 返回值

    详见第 4.1.2 章。

3.3 liot_get_data_call_info

该函数用于获取数据拨号信息。

  • 函数

liot_datacall_errcode_e liot_get_data_call_info(UINT8 nSim, INT32 profile_idx, liot_data_call_info_t *call_info);
  • 参数

nSim:

[In] 所用的 (U)SIM 卡。若模块只支持 1 个 (U)SIM 接口,此参数可设置为 0。取值:0-1。

profile_idx:

[In] PDP 上下文 ID,范围:1~7。

call_info:

[Out] 数据拨号信息。详见第 4.3.1 章。

  • 返回值

详见第 4.1.2 章。

3.3.1 liot_data_call_info_t

数据拨号信息。

  • 声明

typedef struct{    
  INT32 cid;    
  INT32 ip_version;    
  liot_v4_info v4;    
  liot_v6_info v6;    
  char apn_name[LIOT_APN_LEN_MAX];
} liot_data_call_info_t;
  • 参数

参数

类型

描述

cid

INT32

PDP 上下文 ID。范围:1~7。

ip_version

INT32

IP 类型。
1    IPv4
2    IPv6
3    IPv4v6

v4

struct liot_v4_info

IPv4 信息。详见第 4.3.2 章。

v6

struct liot_v6_info

IPv6 信息。详见第 4.3.5 章。

apn_name

char

apn 名字,字符串最大长度为64。

3.3.2 liot_v4_info

IPv4 信息。

  • 声明

typedef struct
{ 
  INT32 state;                 // dial status    
  liot_v4_address_status addr; // IPv4 address information
} liot_v4_info;
  • 参数

参数

类型

描述

state

INT32

拨号状态。
0    未拨号
1    拨号成功

addr

struct liot_v4_address_status

IPv4 地址状态。详见第 4.3.3 章。

3.3.3 liot_v4_address_status

IPv4 地址状态。

  • 声明

typedef struct
{    
  liot_ip4_addr_t ip;
  liot_ip4_addr_t pri_dns;
  liot_ip4_addr_t sec_dns;
} liot_v4_address_status;
  • 参数

参数

类型

描述

ip

struct liot_ip4_addr_t

获取的 IPv4 地址。详见第 4.3.4 章。

pri_dns

struct liot_ip4_addr_t

主域名服务器 IPv4 地址。详见第 4.3.4  章。

sec_dns

struct liot_ip4_addr_t

辅助域名服务器 IPv4 地址。详见第 4.3.4 章。

3.3.4 liot_ip4_addr_t

IPv4 地址。

  • 声明

typedef struct
{    
  UINT32 addr;
} liot_ip4_addr_t;
  • 参数

参数

类型

描述

addr

UINT32

IPv4 地址。

3.3.5 liot_v6_info

IPv6 信息。

  • 声明

typedef struct
{    
  INT32 state;                 // dial status    
  liot_v6_address_status addr; // IPv6 address information
} liot_v6_info;
  • 参数

参数

类型

描述

state

INT32

拨号状态。
0    未拨号
1    拨号成功

addr

struct liot_v6_address_status

IPv6 地址状态。详见第 4.3.6 章。

3.3.6 liot_v6_address_status

IPv6 地址状态。

  • 声明

typedef struct
{    
  liot_ip6_addr_t ip;
  liot_ip6_addr_t pri_dns;
  liot_ip6_addr_t sec_dns;
} liot_v6_address_status;
  • 参数

参数

类型

描述

ip

struct liot_ip6_addr_t

获取的 IPv6 地址。详见第 4.3.7 章。

pri_dns

struct liot_ip6_addr_t

主域名服务器 IPv6 地址。详见第 4.3.7 章。

sec_dns

struct liot_ip6_addr_t

辅助域名服务器 IPv6 地址。详见第 4.3.7 章。

3.3.7 liot_ip6_addr_t

IPv6 地址。

  • 声明

typedef struct
{    
  UINT32 addr[4];
} liot_ip6_addr_t;
  • 参数

参数

类型

描述

addr

UINT32

IPv6 地址,大小为4字节。

3.4 liot_start_data_call

该函数用于启动数据拨号。默认为同步模式,如需异步模式请通过 liot_set_data_call_asyn_mode() 进行设置。同步模式和异步模式区别如下所示:

  1. 同步模式:函数执行结束后返回数据拨号的结果码,若返回 LIOT_DATACALL_SUCCESS 则表示数据拨号成功,获取到 IP 地址,可进行 socket 通信。

  2. 异步模式:函数执行结束后返回函数执行结果码,若返回 LIOT_DATACALL_SUCCESS 并不表示数据拨号成功,仅表示函数执行成功,注册的回调函数将通过 LIOT_DATACALL_ACT_RSP_IND 事件通知上层是否拨号成功。

  • 声明

liot_datacall_errcode_e liot_start_data_call(UINT8 nSim, INT32 cid, INT32 ip_version, CHAR *apn_name, CHAR *username, CHAR *password, INT32 auth_type);
  • 参数

nSim:

[In] 所用的 (U)SIM 卡。若模块只支持 1 个 (U)SIM 接口,此参数可设置为 0。取值:0-1。

cid:

[In] PDP 上下文 ID,范围:1~7。

ip_version:

[In] IP 版本:1 IPv4,2 IPv6,3 IPv4v6。

apn_name:

[In] APN 名称。

username:

[In] 用户名称。

password:

[In] 用户密码。

auth_type:

[In] 认证类型。详见第 4.4.1 章。

  • 返回值

详见第 4.1.2 章。

3.4.1 liot_data_auth_type_e

认证类型。

  • 声明

typedef enum
{    
  LIOT_DATA_AUTH_TYPE_AUTO = 0xFF,
  LIOT_DATA_AUTH_TYPE_NONE = 0,
  LIOT_DATA_AUTH_TYPE_PAP,
  LIOT_DATA_AUTH_TYPE_CHAP,
} liot_data_auth_type_e;
  • 参数

参数

描述

LIOT_DATA_AUTH_TYPE_AUTO

自动选择 PAP 或 CHAP 认证协议

LIOT_DATA_AUTH_TYPE_NONE

无认证协议

LIOT_DATA_AUTH_TYPE_PAP

PAP 认证协议

LIOT_DATA_AUTH_TYPE_CHAP

CHAP 认证协议

3.5 liot_datacall_get_default_pdn_info

该函数用于获取默认承载信息。

  • 声明

liot_datacall_errcode_e liot_datacall_get_default_pdn_info(uint8_t nSim, liot_data_call_default_pdn_info_s *ctx);
  • 参数

nSim:

[In] 所用的 (U)SIM 卡。若模块只支持 1 个 (U)SIM 接口,此参数可设置为 0。取值:0-1。

ctx:

[Out] 承载信息。详见第 4.5.1 章。

  • 返回值

详见第 4.1.2 章。

3.5.1 liot_data_call_default_pdn_info_s

认证类型。

  • 声明

typedef struct{    
  uint8_t ip_version;
  liot_ip4_addr_t ipv4;
  liot_ip6_addr_t ipv6;
  char apn_name[LIOT_APN_LEN_MAX];
} liot_data_call_default_pdn_info_s;
  • 参数

参数

类型

描述

ip_version

uint8_t

IP 类型。
1    IPv4
2    IPv6
3    IPv4v6

ipv4

struct liot_ip4_addr_t

IPv4 信息。详见第 4.3.4 章。

ipv6

struct liot_ip6_addr_t

IPv6 信息。详见第 4.3.7 章。

apn_name

char

apn 名字,字符串最大长度为64。

3.6 liot_datacall_get_sim_profile_is_active

该函数用于获取当前 PDP 上下文激活状态。

  • 声明

bool liot_datacall_get_sim_profile_is_active(uint8_t nSim, int profile_idx);
  • 参数

nSim:

[In] 所用的 (U)SIM 卡。若模块只支持 1 个 (U)SIM 接口,此参数可设置为 0。取值:0-1。

profile_idx:

[In] PDP 上下文 ID,范围:1~7。

  • 返回值

true 已激活,false 未激活。

3.7 liot_stop_data_call

该函数用于终止数据拨号。默认为同步模式,如需异步模式请通过 liot_set_data_call_asyn_mode() 进行设置。当停止拨号时,所有依赖此 cid 的 Socket 连接都将被强制关闭。

  • 声明

liot_datacall_errcode_e liot_stop_data_call(UINT8 nSim, INT32 profile_idx);
  • 参数

nSim:

[In] 所用的 (U)SIM 卡。若模块只支持 1 个 (U)SIM 接口,此参数可设置为 0。取值:0-1。

profile_idx:

[In] PDP 上下文 ID,范围:1~7。

  • 返回值

详见第 4.1.2 章。

3.8 liot_set_data_call_asyn_mode

该函数用于设置启动和终止数据拨号函数(即 liot_start_data_call() 和 liot_stop_data_call())的执行模式。执行模式分为同步和异步两种模式。必须在 liot_start_data_call 之前调用,以配置执行模式。

  • 声明

liot_datacall_errcode_e liot_set_data_call_asyn_mode(uint8_t nSim, int profile_idx, bool enable);
  • 参数

nSim:

[In] 所用的 (U)SIM 卡。若模块只支持 1 个 (U)SIM 接口,此参数可设置为 0。取值:0-1。

profile_idx:

[In] PDP 上下文 ID,范围:1~7。

enable:

[In] 函数执行模式:0 同步模式,1 异步模式。

  • 返回值

详见第 4.1.2 章。

3.9 liot_network_register_wait

该函数用于等待网络注册结果。网络注册是开机后自动完成的,只有注册成功后,才可进行数据拨号。若当前未注册网络,将阻塞当前调用该函数的线程,直至在网络注册成功或超时后退出。

该函数属于同步函数,会在超时时间内等待网络注册成功后返回,超时时间到了还未注册到网络,返回注册失败。建议在独立的线程中调用该接口。

  • 声明

liot_datacall_errcode_e liot_network_register_wait(uint8_t nSim, unsigned int timeout_s);
  • 参数

nSim:

[In] 所用的 (U)SIM 卡。若模块只支持 1 个 (U)SIM 接口,此参数可设置为 0。取值:0-1。

timeout_s:

[In] 等待网络注册的超时时间。单位:秒。

  • 返回值

详见第 4.1.2章。

3.10 liot_datacall_set_nat

该函数用于启用 NAT 功能。模块重启后配置生效。NAT功能通常在模组作为 RNDIS/ECM 网卡使用时才会启用。

  • 声明

liot_datacall_errcode_e liot_datacall_set_nat(uint8_t nSim, UINT32 natmode);
  • 参数

nSim:

[In] 所用的 (U)SIM 卡。若模块只支持 1 个 (U)SIM 接口,此参数可设置为 0。取值:0-1。

natmode:

[In] NAT 模式:0 使能,1 去使能。

  • 返回值

详见第 4.1.2 章。

3.11 liot_datacall_get_nat

该函数用于查询 (U)SIM 卡对应的 NAT 模式。

  • 函数

liot_datacall_errcode_e liot_datacall_get_nat(uint8_t nSim, UINT32 *natmode);
  • 参数

nSim:

[In] 所用的 (U)SIM 卡。若模块只支持 1 个 (U)SIM 接口,此参数可设置为 0。取值:0-1。

natmode:

[Out] NAT 模式:0 使能,1 去使能。

  • 返回值

详见第 4.1.2 章。

3.12 liot_ip4addr_ntoa

该函数用于 IPV4 地址转字符串,目的是将二进制IP地址转换为用户可读字符串。

  • 函数

CHAR *liot_ip4addr_ntoa(liot_ip4_addr_t *addr);
  • 参数

addr:

[In] IPV4 地址指针。详见第 4.3.4 章。

  • 返回值

字符串。

3.13 liot_ip6addr_ntoa

该函数用于 IPV6 地址转字符串,目的是将二进制IP地址转换为用户可读字符串。

  • 函数

CHAR *liot_ip6addr_ntoa(liot_ip6_addr_t *addr);
  • 参数

addr:

[In] IPV6 地址指针。详见第 4.3.7 章。

  • 返回值

字符串。

3.14 liot_ip4addr_aton

该函数用于 IPV4 字符串转地址,将用户可读的 IPv4 地址字符串转换为网络编程所需的二进制格式。

  • 函数

BOOL liot_ip4addr_aton(CHAR *cp, liot_ip4_addr_t *addr);
  • 参数

cp:

[In] IPV4 字符串。

addr:

[Out] IPV4 地址指针。详见第 4.3.4章。

  • 返回值

true 成功,false 失败。

3.15 liot_ip6addr_aton

该函数用于 IPV6 字符串转地址,将用户可读的 IPv6 地址字符串转换为网络编程所需的二进制格式。

  • 函数

BOOL liot_ip6addr_aton(CHAR *cp, liot_ip6_addr_t *addr);
  • 参数

cp:[In] IPV6 字符串。

addr: [Out] 转换后IPV6地址指针。

  • 返回值

详见第 4.1.2 章。

3.16 liot_network_register_cereg_get

该函数用于获取网络注册状态。等同于底层 CEREG (Cellular Register) 状态的查询接口的返回。

  • 函数

liot_datacall_errcode_e liot_network_register_cereg_get(uint8_t nSim);
  • 参数

nSim:

[In] 所用的(U)SIM 卡,若模块只支持 1 个(U)SIM 接口,此参数可设置为 0,取值:0-1或0XFF。

  • 返回值

详见第 4.1.2 章。

3.17 Liot_PsEventCb

该函数注册回调函数,获取系统注网、拨号、OOS事件。

Liot_PsEventCb 用于监控整体网络状态(注网、OOS),而 liot_datacall_register_cb 专注于b拨号接口发起后异步响应的事件。

  • 函数

liot_datacall_errcode_e Liot_PsEventCb(Liot_PsEventCallback_t callback);
  • 参数

callback:

[In] 用户注册的事件通知回调,当发生注网、拨号、OOS事件时会进行通知。

  • 返回值

详见第 4.1.2 章。

3.17.1 Liot_PsEventCallback_t

该回调函数用于上报注网、拨号、OOS时间。

  • 声明

c<br>typedef void (*Liot_PsEventCallback_t)(Liot_PsEvent_e eventId, void *param, UINT32 paramLen);<br>

  • 参数

eventId:

[In] 通知事件ID。

事件

说明

LIOT_PS_EVENT_BEARER_ACTED

网络注册成功

LIOT_PS_EVENT_BEARER_DEACTED

网络注册失败

LIOT_PS_EVENT_NETIF_OOS

无服务(Out of Service)

LIOT_PS_EVENT_NETIF_ACTIVATED

网络接口附着成功

LIOT_PS_EVENT_NETIF_DEACTIVATED

网络接口附着失败

LIOT_PS_EVENT_MAX

枚举最大值(用作边界检查)

param:

[In] 回调函数事件对应的参数,暂未使用。

paramLen:

[In] 回调函数事件对应的参数长度,暂未使用。

3.18 Liot_DataCallCfgDefaultEpsBearer

该函数设置或查询默认承载(CID 1)的 APN 和 IP 类型。

  • 函数

liot_datacall_errcode_e Liot_DataCallCfgDefaultEpsBearer(Liot_DataCallCFG_t *cfg);
  • 参数

cfg:

[In] 配置结构体。

  • 返回值

详见第 4.1.2 章。

3.18.1 Liot_DataCallCFG_t

配置默认承载结构体。

  • 声明

typedef struct
{
    Liot_DataCallMethod_e method;       ///< 操作方法:设置或查询配置
    Liot_DataCallIpType_e ip_version;   ///< IP 类型
    char apn[LIOT_APN_LEN_MAX];         ///< APN 字符串
    uint16_t apn_len;                   ///< APN 字符串的实际长度
} Liot_DataCallCFG_t;
  • 参数

类型

参数

描述

Liot_DataCallMethod_e

method

操作方法:设置或查询配置

Liot_DataCallIpType_e

ip_version

设置或查询的 IP 类型(V4/V6/IPV4V6)

char

apn

APN,最大100字节

uint16_t

apn_len

APN 字符串的实际长度

3.18.2 Liot_DataCallMethod_e

操作方法枚举定义:设置或查询配置。

  • 声明

typedef enum
{
    LIOT_DATACALL_APN_SET,  ///< 设置 APN 配置
    LIOT_DATACALL_APN_GET,  ///< 查询 APN 配置
    LIOT_DATACALL_APN_MAX   ///< 最大值(用于边界检查)
} Liot_DataCallMethod_e;
  • 参数

枚举值

说明

LIOT_DATACALL_APN_SET

设置 APN 配置

LIOT_DATACALL_APN_GET

查询 APN 配置

LIOT_DATACALL_APN_MAX

最大值(用于边界检查)

3.18.3 Liot_DataCallIpType_e

定义 IP 类型的枚举。

  • 声明

typedef enum
{
    LIOT_PS_PDN_TYPE_IP_V4 = 1,  ///< IPv4 类型
    LIOT_PS_PDN_TYPE_IP_V6,      ///< IPv6 类型
    LIOT_PS_PDN_TYPE_IP_V4V6,    ///< IPv4/IPv6 双栈类型
    LIOT_PS_PDN_TYPE_NUM         ///< IP 类型数量(用作计数)
} Liot_DataCallIpType_e;
  • 参数

枚举值

说明

LIOT_PS_PDN_TYPE_IP_V4

IPv4 类型

LIOT_PS_PDN_TYPE_IP_V6

IPv6 类型

LIOT_PS_PDN_TYPE_IP_V4V6

IPv4/IPv6 双栈类型

LIOT_PS_PDN_TYPE_NUM

IP 类型数量(用作计数)

4 代码示例

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

  • 同步模式

    image_1

  • 异步模式

    image_2

5 名词解释

  • PDN Context:Packet Data Network Context 是模组与运营商网络建立数据通道的逻辑实体。

  • CID:profile_idx (CID) 是该通道的 ID,范围通常为 1-7。 CID 是后续所有网络操作(DNS、Socket)的需要的标识符,用户标识通过那个通过建立数据业务。

  • APN:Access Point Name 是运营商网络的接入点。它是激活 PDN Context 的关键参数。确保 APN 名称正确。