跳转至

VoLTE 接口与业务集成

文件结构与接口走读

交付文件与职责

文件或目录 作用 开发者是否修改
/src/protocol/ims/include/ril_interface.h 主控侧公开 RIL 类型和函数声明 应用按接口调用,不修改签名
/src/protocol/ims/CMakeLists.txt IMS 组件入口;缺少源码实现时转入预编译库配置
/src/libs_url/3322/cmake/ims.cmake 将预编译 IMS 库接入主控目标
/src/interim_binary/3322/libs/volte/evb_standard/libims.a IMS 闭源实现
/src/middleware/utils/at/at_cat1_cmd/at/at_cat1.c 主控 AT 口到 Hi2131E 的命令转发通路 通常不修改
/src/middleware/chips/3322/modem_service/modem_service.c 主控侧 Modem 状态查询和服务封装 按业务需要调用上层服务
/src/build/config/target_config/3322/config.py diting-community 的 VoLTE、IMS 通道和组件配置 使用标准目标,不为本文单独改动
/src/tools/pkg/bin/3322/volte/Hi2131EV100.fwpkg 随 SDK 交付的 Hi2131E 固件包

主控调用链

VoLTE主控调用链

应用通过 ril_interface.h 调用主控侧公开接口;标准构建将 libims.a 链入固件,并初始化主控与 Hi2131E 之间的 UART/SPI 通路。本文后续接口表、AT 命令和 NV 内容用于说明公开交互面及交付配置,不展开闭源库或 Hi2131E 固件内部实现。

对外接口分类

表 1 RIL接口实现方式

一级菜单

二级菜单

描述

实现方式

设备信息

软件版本号

获取Modem的软件版本信息。

核内交互

IMEI设备识别码

获取Modem设备的识别码。

核内交互

(U)SIM卡信息

是否在位,Pin-block,Puk-block

获取Modem (U)SIM卡是否在位的信息,Pin码和PUK码是否锁定状态。

核内交互

IMSI

获取 (U)SIM卡的IMSI信息。

核内交互

本机号码显示

获取保存在 (U)SIM中的本机号码。

核内交互

驻网状态

是否驻网

获取终端是否已经驻网。

核内交互

显示运营商名称

获取终端驻网的运营商信息。

核内交互

是否IMS(VoLTE)驻网

获取终端是否IMS驻网信息。

核内交互

是否PDP驻网,显示当前IP地址

获取终端是否PDP驻网,并显示IP地址。

核内交互

手动搜网,并显示可选网络

触发手动搜网,并返回搜网结果。

核间通信

通话设置

通话自动接听开关

设置是否通话自动接听。

核间通信

拨打电话,如“10086”

通知Modem进行拨打电话。

核间通信

短信设置

显示短信中心号码

获取短信中心号码。

核内交互

RIL相关接口

RIL相关接口存在于主控芯片 SDK 版本中,头文件:ril_interface.h

设备信息接口

获取软件版本号

函数原型:int32_t ril_get_software_version(char* ver, size_t size) 函数功能:获取Hi2131E软件版本号,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

ver

出参

char*

软件版本号,字符串格式。

size

入参

size_t

软件版本号长度。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E软件版本号接口处理成功。

>0

int32_t

获取Hi2131E软件版本号接口处理失败。

获取IMEI设备识别号

函数原型:int32_t ril_get_imei(char* imei, size_t len) 函数功能:获取Hi2131E的IMEI号,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

imei

出参

char*

IMEI号,字符串格式。

len

入参

size_t

IMEI号长度。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E IMEI号函数接口处理成功。

>0

int32_t

获取Hi2131E IMEI号函数接口处理失败。

设定VoLTE维测日志级别

函数原型:int32_t ril_set_user_log_level(ril_user_log_level level) 函数功能:设定VoLTE维测功能的日志级别。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

level

入参

ril_user_log_level

RIL_USER_LEVEL_NULL:关闭日志。

RIL_USER_LEVEL_INFO:打印INFO级别及更高级别日志。

RIL_USER_LEVEL_WARN:打印WARN级别及更高级别日志。

RIL_USER_LEVEL_ERROR:打印ERROR级别及更高级别日志。

RIL_USER_LEVEL_ALL:打印所有日志。

说明: 当前版本日志级别默认为RIL_USER_LEVEL_ERROR级别。

判断Hi2131E是否校准

函数原型:int32_t ril_get_if_ue_calibrated(bool *calibrate) 函数功能:获取当前Hi2131E是否已经校准。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

calibrate

出参

bool*

Hi2131E是否已经校准:

true:Hi2131E已校准l;

false:Hi2131E未校准。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E是否校准处理成功。

>0

int32_t

获取Hi2131E是否校准处理失败。

获取基站UTC时间

函数原型:int32_t ril_get_utc_time(const char* utc_str, uint16_t size); 函数功能:获取当前基站UTC时间。

当前公开头文件将 utc_str 声明为 const char *,而 SDK 现有调用将该缓冲区用于接收时间字符串。集成此接口前应以所用 SDK 版本的头文件和实际适配结果为准,避免仅根据旧参数说明修改函数声明。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

utc_str

出参

char*

返回的UTC时间字符串。

size

入参

uint16_t

出参最大长度。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取UTC时间处理成功。

>0

int32_t

获取UTC时间处理失败。

2131E异常信息回调

函数原型:void ril_register_sys_err_report_callback(respond_callback_t rsp_callback); 函数功能:注册回调函数,当2131E发生异常时上报异常原因。

回调函数:typedef int32_t (*respond_callback_t)(uint8_t* data, size_t len);

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

rsp_callback

入参

respond_callback_t

注册函数。

表 2 回调函数respond_callback_t说明

参数

参数描述类型

参数结构类型

说明

data

入参

uint8_t*

异常打印字符串(真实类型为char*)。

len

入参

size_t

异常打印字符串长度。

SIM卡信息接口

判断Hi2131E的SIM卡是否在位

函数原型:int32_t ril_get_is_usim_in_position(bool *status); 函数功能:获取Hi2131E的(U)SIM是否在位,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

status

出参

bool*

是否在位。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E的SIM卡是否在位接口处理成功。

>0

int32_t

获取Hi2131E的SIM卡是否在位接口处理失败。

判断Hi2131E的SIM卡PIN码是否被锁

函数原型:int32_t ril_get_is_usim_pin_block(bool *status); 函数功能:获取Hi2131E的(U)SIM卡PIN码是否被锁,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

status

出参

bool*

true:PIN码被锁。

false:PIN码没有被锁。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E的(U)SIM卡PIN码是否被锁接口处理成功。

>0

int32_t

获取Hi2131E的(U)SIM卡PIN码是否被锁接口处理失败。

判断Hi2131E的SIM卡PUK码是否被锁

函数原型:int32_t ril_get_is_usim_puk_block(bool *status); 函数功能:获取Hi2131E的(U)SIM卡PUK码是否被锁,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

status

出参

bool*

true:PUK码被锁。

false:PUK码没有被锁。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E的(U)SIM卡PUK码是否被锁接口处理成功。

>0

int32_t

获取Hi2131E的(U)SIM卡PUK码是否被锁接口处理失败。

获取Hi2131E的SIM卡IMSI号

函数原型:int32_t ril_get_imsi(char* imsi, size_t len); 函数功能:获取Hi2131E的(U)SIM卡IMSI号,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

imsi

出参

char*

IMSI号,字符串格式。

len

入参

size_t

IMSI号长度。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E的(U)SIM卡IMSI号接口处理成功。

>0

int32_t

获取Hi2131E的(U)SIM卡IMSI号接口处理失败。

获取Hi2131E的SIM卡msisdn

函数原型:int32_t ril_get_usim_msisdn(char* msisdn, size_t len); 函数功能:获取Hi2131E的(U)SIM卡msisdn信息,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

imsi

出参

char*

msisdn,字符串格式。

len

入参

size_t

msisdn长度。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E的(U)SIM卡msisdn信息接口处理成功。

>0

int32_t

获取Hi2131E的(U)SIM卡msisdn信息接口处理失败。

获取CCHO返回结果

函数原型:int32_t ril_get_ccho(char* ccho, size_t len, char* ccho_str, uint16_t str_len); 函数功能:获取Hi2131E的“AT+CCHO”命令返回结果。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

ccho

出参

char*

CCHO命令返回结果,字符串格式。

len

出参

size_t

CCHO命令返回结果长度。

ccho_str

入参

char*

CCHO命令。

str_len

入参

uint16_t

CCHO命令长度。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E的“AT+CCHO”命令返回结果接口处理成功。

>0

int32_t

获取Hi2131E的“AT+CCHO”命令返回结果接口处理失败。

小区信息

查询当前小区信号状态

函数原型:int32_t ril_get_radio_signal_info(soc_ue_cell_radio_info *signal_info); 函数功能:获取Hi2131E的当前小区信号状态,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

signal_info

出参

soc_ue_cell_radio_info*

int16_t rsrp:参考信号接收功率。单位:1/10dB。

int16_t rsrq:参考信号接收质量。单位:1/10dB。

int16_t rssi:接收信号强度指示。单位:1/10dB。

int16_t snr:信噪比。单位:1/10dB。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E的(U)SIM卡msisdn信息接口处理成功。

>0

int32_t

获取Hi2131E的(U)SIM卡msisdn信息接口处理失败。

查询当前小区信息

函数原型:int32_t ril_get_ue_registration_status(soc_ue_cell_info *reg_status); 函数功能:获取Hi2131E的当前小区信息,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

reg_status

出参

soc_ue_cell_info *

uint8_t version

bool primary_cell:0,搜索到的邻近小区;1,当前服务小区。

bool valid:0,无效;1,有效。

uint16_t pci:物理小区标识。范围:0~503。

uint32_t earfcn:E-UTRA绝对射频信道号。

int16_t rsrp:参考信号接收功率。单位:1/10dB。

int16_t rsrq:参考信号接收质量。单位:1/10dB。

int16_t rssi:接收信号强度指示。单位:1/10dB。

int16_t snr:信噪比。单位:1/10dB。

int16_t srxlev:小区选择接收电平值。单位:dB。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E的(U)SIM卡msisdn信息接口处理成功。

>0

int32_t

获取Hi2131E的(U)SIM卡msisdn信息接口处理失败。

查询邻区信息

函数原型:int32_t ril_get_ue_neighbor_cell_info(soc_ue_neighbor_info *neighbor_info); 函数功能:获取Hi2131E的临区信息,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

neighbor_info

出参

soc_ue_neighbor_info *

uint8_t neighbor_cell_num:邻区个数。

soc_ue_cell_info cell_info[10]:小区信息。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E的临区信息接口处理成功。

>0

int32_t

获取Hi2131E的临区信息接口处理失败。

查询网络下行速率

函数原型:int32_t ril_get_network_dl_rate(uint32_t *dl_rate) 函数功能:获取Hi2131E当前网络下行速率信息,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

dl_rate

出参

uint32_t *

下行实际速率。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E当前网络下行速率信息成功。

>0

int32_t

获取Hi2131E当前网络下行速率信息失败。

查询网络上行速率

函数原型:int32_t ril_get_network_ul_rate(uint32_t *ul_rate) 函数功能:获取Hi2131E当前网络上行速率信息,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

ul_rate

出参

uint32_t *

上行实际速率。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E当前网络上行速率信息成功。

>0

int32_t

获取Hi2131E当前网络上行速率信息失败。

查询上行发数状态

函数原型:int32_t ril_get_network_ul_tx_stats(bool *status) 函数功能:获取Hi2131E上行发数状态,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

status

出参

bool*

true:当前处于发数状态;

false:当前未处于发数状态。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E上行发数状态成功。

>0

int32_t

获取Hi2131E上行发数状态失败。

驻网状态接口

获取驻网状态

函数原型:int32_t ril_get_radio_reg_status(uint8_t *status); 函数功能:获取Hi2131E的驻网状态,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

status

出参

uint8_t*

0:EMM detached。

1:EMM attached。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取Hi2131E的驻网状态接口处理成功。

>0

int32_t

获取Hi2131E的驻网状态接口处理失败。

显示运营商信息

函数原型:int32_t ril_get_radio_operator_info(ril_operator_info *operator_info); 函数功能:显示Hi2131E的运营商信息,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

operator_info

出参

ril_operator_info*

运营商信息。

表 2 ril_operator_info结构体说明

字段

参数结构类型

说明

numeric

char[20]

数字格式的运营商信息。

name_short

char[20]

短字符串格式的运营商信息。

name_long

char[20]

长字符串格式的运营商信息。

表 3 返回值说明

返回值

参数结构类型

说明

0

int32_t

显示运营商信息接口处理成功。

>0

int32_t

显示运营商信息接口处理失败。

获取IMS驻网状态

函数原型:int32_t ril_get_radio_ims_reg(bool *status); 函数功能:获取IMS的驻网状态,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

status

出参

bool*

IMS注册状态。

true:已注册;

false:未注册。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取IMS的驻网状态接口处理成功。

>0

int32_t

获取IMS的驻网状态接口处理失败。

是否PDP驻网,显示IP地址

函数原型:int32_t ril_get_ue_addr(ril_ip_addr_info *ip_addr_info); 函数功能:获取PDP地址,核内交互(相当于执行:AT+CGPADDR)。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

ril_ip_addr_info

出参

ril_ip_addr_info

IP地址信息。

表 2 ril_ip_addr_info结构体说明

字段

参数结构类型

说明

ip_addr

ip_addr_t [2]

IP地址信息。

ip_num

uint8_t

IP数量。

表 3 ip_addr_t结构体说明

字段

参数结构类型

说明

u_addr

union

地址信息,联合体。

ip6

ip6_addr_t

IPv6地址:

u32_t addr[4]。

ip4

ip4_addr_t

IPv4地址:

u32_t addr。

type

uint8_t

IP地址类型。

表 4 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取PDP接口处理成功。

>0

int32_t

获取PDP接口处理失败。

手动搜网,并显示可选网络

函数原型:int32_t ril_get_radio_search_start(void); 函数功能:获取在网络中搜索到的PLMN清单,核内交互(相当于执行:AT+COPS=?)。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

-

-

当前公开接口无入参。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

获取PLMN清单接口处理成功。

>0

int32_t

获取PLMN清单接口处理失败。

设置快速休眠时间

函数原型:int32_t ril_set_fast_sleep_time(ril_set_fast_sleep_t fast_sleep); 函数功能:开启增强休眠功能后没有数传时快速进入idle态时间,单位ms,最小100ms。不建议设置时间小于1s,时间太短可能会导致数传失败。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

fast_sleep

入参

ril_set_fast_sleep_t

设置条件结构体。

表 2 ril_set_fast_sleep_t结构体说明

参数

参数描述类型

参数结构类型

说明

fast_sleep_switch

入参

bool

是否开启快速睡眠。

fast_sleep_time

入参

uint32_t

进入快速睡眠的时间,单位ms(默认5000ms)。

表 3 返回值说明

返回值

参数结构类型

说明

0

int32_t

设置进入休眠的时间成功。

>0

int32_t

设置进入休眠的时间失败。

通话接口

设置自动接听

函数原型:int32_t ril_set_auto_answer(uint8_t time_s); 函数功能:设置自动应答,核内交互(相当于执行:ATS0=)。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

time_s

入参

uint8_t

S0定时器时长。

0:关闭自动接听;

1~255:启动自动应答的时间,单位:s。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

设置自动接听接口处理成功。

>0

int32_t

设置自动接听接口处理失败。

拨打电话

函数原型:int32_t ril_set_call_orig_req(const char* call_str); 函数功能:拨打电话,核内交互(相当于执行:ATDxxx;)。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

call_str

入参

char*

拨打的电话号码。

响应回调

-

-

当前公开函数仅接收号码字符串,不包含独立的回调参数。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

拨打电话接口处理成功。

>0

int32_t

拨打电话接口处理失败。

手动接听电话

函数原型:int32_t ril_set_call_mt_accept_req(void); 函数功能:手动接听电话,核内交互(相当于执行:ATA)。

表 1 返回值说明

返回值

参数结构类型

说明

0

int32_t

接听电话接口处理成功。

>0

int32_t

接听电话接口处理失败。

挂断电话

函数原型:int32_t ril_set_call_rel_req(void); 函数功能:挂断电话,核内交互(相当于执行:ATH)。

表 1 返回值说明

返回值

参数结构类型

说明

0

int32_t

挂断电话接口处理成功。

>0

int32_t

挂断电话接口处理失败。

AT指令通道

Hi2131E侧AT命令遵循3GPP TS 27.007和27.005规范。

AT指令发送

函数原型:int32_t ril_at_cmd_exc(const char *str); 函数功能:执行AT命令,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

str

入参

char*

AT命令字符串。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

执行AT命令接口处理成功。

>0

int32_t

执行AT命令接口处理失败。

同步AT命令发送
  • 函数原型:int32_t ril_at_cmd_sync_get_info(const char *at_str, uint8_t *data, uint16_t size, uint32_t timeout);

    函数功能:同步执行AT命令,核内交互。

    表 1 参数说明

    参数

    参数描述类型

    参数结构类型

    说明

    at_str

    入参

    char

    AT命令字符串。

    data

    出参

    uint8_t

    AT命令返回的结果字符串。

    size

    入参

    uint16_t

    AT命令结果字符串的长度。

    timeout

    入参

    uint32_t

    同步执行AT命令超时时间。

    表 2 返回值说明

    返回值

    参数结构类型

    说明

    0

    int32_t

    执行同步AT命令接口处理成功。

    >0

    int32_t

    执行同步AT命令接口处理失败。

  • 函数原型:int32_t ril_at_sync_multiple_get_info(const char *at_str, uint8_t *data, uint32_t size, uint32_t times, uint32_t timeout)

    函数功能:同步执行AT命令,接收多条AT指令回复内容。

    表 3 参数说明

    参数

    参数描述类型

    参数结构类型

    说明

    at_str

    入参

    char

    AT命令字符串。

    data

    出参

    uint8_t

    AT命令返回的结果字符串。

    size

    入参

    uint32_t

    AT命令结果字符串的长度。

    times

    入参

    uint32_t

    指定接收多少条AT命令执行回复结果。

    timeout

    入参

    uint32_t

    同步执行AT命令超时时间。

    表 4 返回值说明

    返回值

    参数结构类型

    说明

    0

    int32_t

    执行同步AT命令接口处理成功。

    >0

    int32_t

    执行同步AT命令接口处理失败。

AT命令注册回调

函数原型:void ril_register_at_reply_callback(respond_callback_t rsp_callback); 函数功能:向AT注册回调。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

rsp_callback

入参

respond_callback_t

回调函数:

typedef int32_t (*respond_callback_t)(uint8_t* data, size_t len);

短信接口

查询短信中心号码

函数原型:int32_t ril_get_sms_smsc(char* smsc, size_t len); 函数功能:查询当前短信地址。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

smsc

出参

char*

短信中心号码。

len

入参

size_t

smsc长度。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

执行查询短信中心号码接口处理成功。

>0

int32_t

执行查询短信中心号码接口处理失败。

接收单条短信

函数原型:int32_t ril_ue_read_short_message(int8_t sms_index, uint8_t *sms_data, int16_t read_max_length); 函数功能:接收单条短信,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

sms_index

入参

int8_t

查询短信的索引。

sms_data

出参

uint8_t *

短信内容。

read_max_length

入参

int16_t

短信内容接收长度。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

执行接收单条短信接口处理成功。

>0

int32_t

执行接收单条短信接口处理失败。

发送单条短信

函数原型:int32_t ril_ue_send_short_message(const char* number, const char *sms_data, uint16_t sms_len) 函数功能:发送单条短信,核内交互。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

number

入参

const char*

短信发送目的号码。

sms_data

入参

const char*

短信内容。

sms_len

入参

uint16_t

短信内容长度。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

执行发送单条短信接口处理成功。

>0

int32_t

执行发送单条短信接口处理失败。

升级接口

Hi2131E升级包可参考2131E FOTA升级包制作工具 用户指南制作,通过ril升级接口,可实现Hi2131E芯片的版本更新、固件升级,升级流程:开始升级 -> 发送数据包1 -> 发送数据包2 -> 发送数据包n -> 结束升级。

须知: Hi2131E差分升级包大小不能大于350KByte。

开始升级通知

函数原型:int32_t ril_systerm_updated_start(void) 函数功能:升级开始通知,Hi2131E开启升级。

表 1 返回值说明

返回值

参数结构类型

说明

0

int32_t

执行升级开始通知成功。

>0

int32_t

执行升级开始通知失败。

升级完成通知

函数原型:int32_t ril_systerm_updated_end(void) 函数功能:升级完成通知,Hi2131E完成升级。

表 1 返回值说明

返回值

参数结构类型

说明

0

int32_t

执行升级完成通知成功。

>0

int32_t

执行升级完成通知失败。

发送升级包数据

函数原型:int32_t ril_systerm_updated_download_package(ril_upadated_package_t *upadated_package) 函数功能:发送升级包到Hi2131E。

表 1 参数说明

参数

参数描述类型

参数结构类型

说明

upadated_package

入参

ril_upadated_package_t;

download_type:当前固定为1,默认升级包数据保存到文件系统中。

Sn:序列号。应从0开始,每个数据包段递增1

Len:数据长度,应为32/64/128/256/512。

Crc:data段数据校验值crc8(数据包段中每个字节的xor8)。

Data:升级包数据。

表 2 返回值说明

返回值

参数结构类型

说明

0

int32_t

执行升级包发送接口处理成功。

>0

int32_t

执行升级包发送接口处理失败。

VoLTE相关AT命令

发起呼叫请求:D

命令描述

发起一个呼叫。

命令语法

命令

返回结果

示例

D[<dial_string>][I][G][;]

OK

错误情况:

+CME ERROR: <err>

atd13900000000;

OK

atd13900000000i;

OK

atd13900000000I;

OK

参数描述

参数

描述

<dial_string>

字符串类型。呼叫号码。

[I]

如果命令中带有I,表示在这次呼叫中禁止显示主叫号码;

如果命令中带有i,表示在这次呼叫中允许显示主叫号码。

[G]

暂不支持。一般表示在这次呼叫中使能CUG补充业务。

接听来电:A

命令描述

接听当前的来电。

命令语法

命令

返回结果

示例

A

OK

错误情况:

+CME ERROR: <err>

ATA

OK

挂断电话:H

命令描述

挂断电话。

命令语法

命令

返回结果

示例

H[<value>]

OK

错误情况:

+CME ERROR: <err>

ATH

OK

参数描述

参数

描述

<value>

整型值,仅支持取值为0。

取其他值时,响应结果均为ERROR。

设置自动接听:S0

命令描述

设置自动应答。

命令语法

命令

返回结果

示例

S0=<n>

OK

错误情况:

+CME ERROR: <err>

ATS0=5

OK

S0?

<CR><LF><n><CR><LF>

<CR><LF>OK<CR><LF>

ATS0?

5

OK

S0=?

<CR><LF>S0: (list of supported <n>s) <CR><LF>

<CR><LF>OK<CR><LF>

ATS0=?

S0: (0-255)

OK

参数描述

参数

描述

<n>

整型值,默认值为0。

0:关闭自动应答;

1~255:启动自动应答的时间,单位:s。

注:不同的核心网规定的振铃超时时间不同,设置的自动应答时间过长可能会导致核心网“Altering timeout”异常,从而拒绝呼叫。

IMS核心网网元通常配置被叫侧呼叫振铃超时定时器时长为60s,建议此命令配置时长不要超过该值。

查询当前呼叫信息:+CLCC

命令描述

列出当前所有的呼叫。

命令语法

命令

返回结果

示例

+CLCC

+CLCC: <id1>,<dir>,<stat>,<mode>,<mpty>[,

<number>,<type>[,<alpha>]]

<id2>,<dir>,<stat>,<mode>,<mpty>[,

<number>,<type>

......

AT+CLCC

+CLCC: 1,0,0,0,0,"888",129

OK

+CLCC=?

<CR><LF><n><CR><LF>

<CR><LF>OK<CR><LF>

AT+CLCC=?

OK

参数描述

参数

描述

<idx>

整型值,呼叫标识。

<dir>

整型值,呼叫方向。

0:主叫;

1:被叫。

<state>

整型值,呼叫状态。

0:激活状态;

1:呼叫保持状态

2:主叫,拨号状态;

3:主叫,回铃音状态;

4:被叫,来电状态;

<mode>

整型值,呼叫模式。(当前仅支持语音呼叫模式。)

0:语音呼叫。

<mpty>

整型值,多方通话状态。

0:不在多方通话中。

<number>

字符串类型,电话号码。

主叫侧显示被叫号码,被叫侧显示主叫号码。

<type>

号码地址类型,整型值。

129:普通号码;

145:国际号码(以“+”开头)。

查询IMS域注册状态:+CIREG

命令描述

查询当前IMS域网络注册状态以及设置状态上报方式。

命令语法

命令

返回结果

示例

+CIREG=[<n>]

OK

错误情况:

+CME ERROR: <err>

AT+CIREG=1

OK

+CIREG?

+CIREG: <n>,<reg_info>[,<ext_info>]

错误情况:

+CME ERROR: <err>

AT+CIREG?

+CIREG:0,1,5(IMS已注册且支持语音和短信)

OK

+CIREG=?

+CIREG: (list of supported <n>s)

OK

AT+CIREG=?

+CIREG: (0-2)

OK

参数描述

参数

描述

<n>

整型值,主动上报方式,默认值为0。

0:禁止+CIREGU的主动上报;

1:使能+CIREGU: <reg_info>的主动上报;

2:使能+CIREGU: <reg_info>[,<ext_info>]的主动上报。

<reg_info>

整型值,注册状态。

0:未注册IMS网络;

1:已注册IMS网络。

<ext_info>

整型值,IMS域能力值,取值范围[1,0xFFFFFFFF],每个bit位表示不同的能力。

1:RTP-based transfer of voice;

2:RTP-based transfer of text;

4:SMS using IMS functionality;

8:RTP-based transfer of video。

例如,等于5的时候,表示支持RTP-based transfer of voice和SMS using IMS functionality。

注:IMS已注册才显示该值

主动上报IMS域注册状态:+CIREGU

命令描述

主动上报当前IMS域网络注册状态,能否主动上报受+CIREG命令控制。

命令语法

命令

返回结果

示例

-

+CIREGU: <reg_info>[,<ext_info>]

+CIREGU:1,5

OK

参数描述

参数

描述

<reg_info>

整型值,注册状态。

0:未注册IMS网络;

1:注册了IMS网络。

<ext_info>

整型值,IMS域能力值,取值范围[1,0xFFFFFFFF],每个bit位表示不同的能力。

1: RTP-based transfer of voice;

2: RTP-based transfer of text;

4: SMS using IMS functionality;

8:RTP-based transfer of video。

例如,等于5时,表示支持RTP-based transfer of voice和SMS using IMS functionality。

查询IMS域的虚拟号码:+VOLTEIMPU

命令描述

该命令用于查询IMS域的IMPU信息以及虚拟号码。

命令语法

命令

返回结果

示例

+VOLTEIMPU

<CR><LF>OK<CR><LF>

<CR><LF>+VOLTEIMPU: < IMPU>[,<Virtual_Number >]<CR><LF>

错误情况:

<CR><LF>+CME ERROR: <err><CR><LF>

AT+VOLTEIMPU

+VOLTEIMPU: abcd,123456

OK

+VOLTEIMPU?

OK

AT+VOLTEIMPU?

OK

+VOLTEIMPU=?

OK

AT+VOLTEIMPU=?

OK

参数描述

参数

说明

<IMPU>

字符串类型,IMPU信息,取值范围0~128Byte。

<Virtual_Number>

字符串类型,网络分配的虚拟电话号码,最大长度为127Byte。

IMS服务状态更新指示:+IMSSRVSTATUS

命令描述

IMS服务状态或者注册状态发生变化的主动上报。

命令语法

命令

示例

+IMSSRVSTATUS: <sms_srv_status>,<voip_srv_status>

+IMSSRVSTATUS: 2,0

参数描述

参数

描述

<sms_srv_status>

整型值,IMS短信的服务状态:

0:IMS SMS service is not available;

1:IMS SMS is in limited service;

2:IMS SMS is in full service。

<voip_srv_status>

整型值,IMS VoIP的服务状态:

0:IMS VoIP service is not available;

1:IMS VoIP is in limited service;

2:IMS VoIP is in full service。

来电指示:IRING

命令描述

IMS域来电指示。

命令语法

命令

示例

IRING

有IMS域来电

IRING。

发起语音呼叫指示:+ORIG

命令描述

主动上报命令,在用户发起电路域呼叫时,通知用户UE正在向网络发起呼叫。

命令语法

命令

示例

+ORIG: <call_id>,<call_type>

UE向网络发起一个语音呼叫

+ORIG: 1,0。

参数描述

参数

说明

call_id

整型值,呼叫ID。

call_type

整型值,呼叫类型。

0:语音呼叫;

9:紧急呼叫。

UE收到网络指示:+CONF

命令描述

主动上报命令,通知用户发起呼叫后,UE收到了网络接通指示。

命令语法

命令

示例

+CONF: <call_id>

UE收到网络接通指示

+CONF: 1。

参数描述

参数

说明

call_id

整型值,呼叫ID。

呼叫接通指示:+CONN

命令描述

主动上报命令,当呼叫接通后,UE通知用户呼叫已经接通。

命令语法

命令

示例

+CONN:<call_id>, <call_type>

语音呼叫已经接通

+CONN:1,0。

参数描述

参数

说明

call_id

整型值,呼叫ID。

call_type

整型值,呼叫类型。

0:语音呼叫;

9:紧急呼叫。

通话结束指示:+CEND

命令描述

主动上报命令,在通话结束后,UE通知用户通话结束原因和通话时长。

命令语法

命令

示例

+CEND: <call_id>, <duration>,<cause>

通话结束

+CEND: 1,10,0

参数描述

参数

说明

call_id

整型值,呼叫ID。

duration

整型值,通话时长,单位:s。

cause

整型值,呼叫错误原因值;如表1所示。

表 1 错误码说明

错误码

数值

说明

IMSA_CALL_CAUSE_SUCCESS

0

正常挂断。

IMSA_CALL_CAUSE_IMSA_ERROR

1

IMSA特殊无服务异常。IMSA_INTRA_CALL_SRV_STATUS_IND消息中no_srv_cause不是IMSA_CALL_NO_SRV_CAUSE_MEDIA_PDP_RELEASE

IMSA_CALL_NO_SRV_CAUSE_SIP_PDP_ERRIMSA_CALL_NO_SRV_CAUSE_REG_ERRIMSA_CALL_NO_SRV_CAUSE_EMC_SIP_PDP_NO_PCSCF。

IMSA_CALL_CAUSE_IMSA_TCALL_TIMEOUT

2

IMSA Tcall超时。

IMSA_CALL_CAUSE_IMSA_WAIT_RES_TIMEOUT

3

等待资源预留成功定时器超时。

IMSA_CALL_CAUSE_IMS_EMC_REG_FAIL

4

紧急注册失败引起紧急呼叫失败。

IMSA_CALL_CAUSE_IMS_INNER_ERROR

5

IMS协议栈内部异常,IMS侧sip_status_code<100。

IMSA_CALL_CAUSE_IMSA_STRM_RTP_BREAK

6

IMS侧sip_status_code=100。

IMSA_CALL_CAUSE_IMSA_IMS_ERROR

7

IMS侧100<sip_status_code<300或者sip_status_code≥700。

IMSA_CALL_CAUSE_NOR_DIAL_ERROR

8

IMSA普通呼叫dial请求创建失败。

IMSA_CALL_CAUSE_EMC_DIAL_ERROR

9

IMSA紧急呼叫dial请求创建失败。

IMSA_CALL_CAUSE_SIGNAL_PDP_ERR

10

默认承载被释放。

IMSA_CALL_CAUSE_MEDIA_PDP_ERR

11

专有承载被释放。

300~700

300~700

IMS侧300≤sip_status_code<700。

呼叫状态上报:+CALLSTATE

命令描述

主动上报命令,呼叫过程中,主动上报呼叫状态的变化。

命令语法

命令

示例

+CALLSTATE: <call_id>, <state>,<domain>

有IMS域来电

+CALLSTATE: 1,5,1

参数描述

参数

说明

call_id

整型值,呼叫ID。

state

整数型,指示对应call_id的呼叫状态。

0:Call originate(MO),向网络发起呼叫;

1:Call is Proceeding,呼叫发起,网络已经开始处理;

2:Alerting,振铃;

3:Connected,呼叫已经接通;

4:Released,呼叫被释放;

5:InComing,有来电;

6:Waiting,有一个等待的来电;

7:Hold,呼叫保持;

8:Retrieve,呼叫恢复。

domain

整型值,语音电话的呼叫域。

0:CS域语音电话;

1:IMS域语音电话。

主动上报语音带宽信息:+CHANNELINFO

命令描述

主动上报命令,呼叫过程中,主动上报语音带宽的信息。

命令语法

命令

示例

+CHANNELINFO: <status>,<domain>

IMS域语音电话,当前语音处于宽带语音时,主动上报

+CHANNELINFO: 2,1

参数描述

参数

说明

status

整型值,语音信道的状态。

0:振铃,无带内音信息(本地回铃音上报);

1:带内音可用,窄带语音(网侧携带铃音);

2:带内音可用,宽带语音(网侧携带铃音)。

domain

整型值,语音电话的呼叫域。

0:CS域语音电话(本产品无CS);

1:IMS域语音电话。

上报IMS注册失败原因:+IMSREGERR

命令描述

该命令用于上报IMS注册失败原因。

命令语法

命令

示例

+IMSREGERR: <err_type>, <err_code>,<sip_reason>

通话结束

+IMSREGERR: 1,3,

参数描述

参数

说明

err_type

整型值,错误类型。

0:PDN建立失败;

1:IMS注册失败。

err_code

整数型,失败原因值。

当err_type为0时:PDN建立失败原因。

当err_type为1时:

0:注册模块命令执行成功(不会出现);

1:注册模块命令执行失败;

2:网侧SIP拒绝,具体原因见sip_reason;

3:发送或接收SIP报文超时;

4:发送或接收SIP报文时,底层传输发生错误;

5:注册成功后,网侧发起的去注册;

6:没有可以再使用的注册地址对;

7:注册被禁止(暂时仅作预留,不会出现);

8:周期注册,被网侧拒绝;

300~700:IMS失败原因值。

sip_reason

字符串值类型,网侧SIP消息拒绝携带的原因值。

IMS域被叫处理状态信息主动上报:+IMSMTRPT

命令描述

该命令用于上报IMSA开始处理被叫。

命令语法

命令

示例

+IMSMTRPT: <number>,<status>,<cause>

IMSA开始处理被叫主动上报:

+IMSMTRPT: +8618000009193,0,0

参数描述

参数

说明

number

字符串,被叫来电号码。

status

整型值,状态。

0:收到被叫,开始处理被叫过程;

1:被叫异常,未收到RING就结束。

cause

整型值,呼叫错误原因值;如表1所示。

表 1 错误码说明

错误码

数值

说明

IMSA_CALL_CAUSE_SUCCESS

0

正常挂断。

IMSA_CALL_CAUSE_IMSA_ERROR

1

IMSA特殊无服务异常。IMSA_INTRA_CALL_SRV_STATUS_IND消息中no_srv_cause不是IMSA_CALL_NO_SRV_CAUSE_MEDIA_PDP_RELEASE,IMSA_CALL_NO_SRV_CAUSE_SIP_PDP_ERR,IMSA_CALL_NO_SRV_CAUSE_REG_ERR,IMSA_CALL_NO_SRV_CAUSE_EMC_SIP_PDP_NO_PCSCF。

IMSA_CALL_CAUSE_IMSA_TCALL_TIMEOUT

2

IMSA Tcall超时。

IMSA_CALL_CAUSE_IMSA_WAIT_RES_TIMEOUT

3

等待资源预留成功定时器超时。

IMSA_CALL_CAUSE_IMS_EMC_REG_FAIL

4

紧急注册失败引起紧急呼叫失败。

IMSA_CALL_CAUSE_IMS_INNER_ERROR

5

IMS协议栈内部异常,IMS侧sip_status_code<100。

IMSA_CALL_CAUSE_IMSA_STRM_RTP_BREAK

6

IMS侧sip_status_code=100。

IMSA_CALL_CAUSE_IMSA_IMS_ERROR

7

IMS侧100<sip_status_code<300或者sip_status_code≥700。

IMSA_CALL_CAUSE_NOR_DIAL_ERROR

8

IMSA普通呼叫dial请求创建失败。

IMSA_CALL_CAUSE_EMC_DIAL_ERROR

9

IMSA紧急呼叫dial请求创建失败。

IMSA_CALL_CAUSE_SIGNAL_PDP_ERR

10

默认承载被释放。

IMSA_CALL_CAUSE_MEDIA_PDP_ERR

11

专有承载被释放。

IMSA_CALL_CAUSE_EMM_EST_ERR

12

EMM建链失败引起呼叫失败。

300~700

300~700

IMS侧300≤sip_status_code<700。

关闭IMS功能开关:+IMSSWITCH

命令描述

配置开启/关闭IMS协议栈。

命令语法

命令

返回结果

示例

+IMSSWITCH=[<n>]

OK

错误情况:

+CME ERROR: <err>

AT+IMSSWITCH=1

OK

+IMSSWITCH=?

+IMSSWITCH: (list of supported <n>s)

OK

AT+IMSSWITCH=?

+IMSSWITCH: (0-1)

OK

参数描述

参数

描述

<n>

整型值,默认值为1。

0:关闭IMS协议栈;

1:打开IMS协议栈。