SMS

Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.


功能概述

SMS(Short Message Service,短信服务)是用户通过移动终端直接发送和接收文字或数字信息的通信服务。每条SMS消息由多个字段组成,包括短信中心地址、目标地址、协议标识、数据编码及用户数据等,通常以二进制形式编码并通过GSM网络的信令信道传输。

基本要素

  1. 短信实体(SME):生成或接收短信的终端(如手机)或应用服务器(如短信网关)。

  2. 短信服务中心(SMSC):网络核心单元,负责存储、转发和路由短信,确保消息在接收方不可达时能够暂存并重试发送。

  3. 短信内容:标准单条短信的最大长度为140字节,使用7-bit编码时可容纳160个英文/数字字符,使用UCS2编码时可容纳70个中文字符。超长内容可通过拼接多条短信(Concatenated SMS)实现。

  4. 信令信道:短信通过控制信道传输,无需建立专用的语音或数据业务信道即可工作。

端到端收发流程

SMS的端到端传递主要依赖于短信服务中心进行消息的中转和路由,核心在于信令交互。

  1. 消息提交
    发送方设备将编辑好的短信通过基站子系统(BSS)转发至移动交换中心(MSC),再由移动交换中心通过标准协议(如MAP)提交至短信服务中心,并赋予时间戳、服务中心地址等元数据。

  2. 消息存储与路由
    短信服务中心接收到消息后,将消息存入内部队列并根据接收方的号码查询归属位置寄存器(HLR)或拜访位置寄存器(VLR),以确定接收方当前的位置和状态。若接收方不可达(如关机或不在服务区),短信服务中心将保留消息并稍后重试。

  3. 消息传递
    接收方设备可用时,短信服务中心通过移动交换中心和基站子系统将消息推送至接收方设备。

  4. 消息通知与确认
    接收方设备接收到消息后,通常会向网络回传确认,短信服务中心随即清除队列内已投递消息。若因存储空间不足等原因导致消息无法传递,网络会向发送方返回状态报告(Status Report),指示消息的送达状态(如“已送达”或“发送失败”)。发送方和接收方设备均会生成本地通知(如提示音或图标),告知用户消息的发送或接收状态。

  5. 消息删除或重试
    若消息在设定时间内无法传递,短信服务中心判定消息过期并删除,或根据配置策略进行重试,直至投递成功。

常用收发模式

文本模式

  1. 基本概念:对用户和开发者友好的简化模式,底层复杂的编码和协议数据包构建由设备自动完成。

  2. 工作原理

    • 发送:用户直接填写号码和明文内容,模块内部自动编码发送;

    • 接收:模块直接返回可读文本、发送号码、时间,无需手动解析二进制。

  3. 优点:开发简单易上手,英文场景调试便捷,无需掌握TPDU结构与编码算法。

  4. 缺点:编码方式由模块自动选择,用户控制力弱;难以发送二进制信息(如WAP Push)。

PDU模式

  1. 基本概念:面向协议的底层操作模式,开发者需直接构造和解析完整的十六进制字符串协议数据单元,提供对SMS协议的完全控制。

  2. 工作原理

    • 发送:开发者手动构建包含短信服务中心信息、TPDU头和用户数据的PDU字符串并发送至模块;

    • 接收:模块返回PDU字符串,开发者需自行编写代码解析字符串以提取发送方号码、时间戳和解码内容。

  3. 优点:可精确控制编码方案(7-bit/8-bit/UCS2);支持长短信(通过UDH头);可发送二进制短信和特殊功能短信(如闪信、WAP Push)。

  4. 缺点:开发复杂,需深入理解SMS PDU格式及编解码算法;十六进制字符串肉眼难以阅读,调试困难。

消息结构

一条PDU消息分为两大段:SCA短信中心前缀段 + TPDU传输协议数据单元段

分段

字段

位置


长度(字节)

名称

说明

SCA前缀

SCA长度

P1


1

短信中心地址长度

后面SCA字段的字节数

SCA前缀

SCA类型

P2


0~1

短信中心地址类型

通常“91”代表国际格式

SCA前缀

SCA地址

P3


0~10

短信中心号码

BCD编码短信中心号码

TPDU

FO

P4


1

第一个字节

包含TP-MTI等报文类型标志位

TPDU

MR

P5


1

消息参考

发送方分配的消息ID

TPDU

DA长度

P6


1

目标地址长度

目标号码的数字位数

TPDU

DA类型

P7


1

目标地址类型

通常“91”代表国际格式

TPDU

DA地址

P8


0~10

目的地址

BCD编码接收手机号

TPDU

PID

P9


1

协议标识

协议类型,通常为“00”

TPDU

DCS

P10


1

数据编码方案

编码方案(7-bit/8-bit/UCS2);详见 数据编码方案说明

TPDU

VP

P11


1

有效期

短信在SMSC最大留存时长

TPDU

UDL

P12


1

用户数据长度

用户数据的字节长度

TPDU

UD

P13


0~140

用户数据

实际短信内容

数据编码方案说明

编码类型

比特数/字符

字符集

单条短信最大字符数

典型使用场景

7-bit

7 bit

GSM默认字母表(英文、数字、基础符号)

160

纯英文、数字、简单符号短信

8-bit

8 bit (1 byte)

二进制/ASCII扩展数据

140

二进制数据(如WAP Push)

UCS2

16 bit (2 bytes)

Unicode全语种

70

中文、多语言、emoji、特殊符号

SMS API

头文件

qosa_sms.h

函数概览

函数

说明

qosa_sms_send_pdu_async()

异步模式下发送PDU格式短信

qosa_sms_read_pdu_async()

异步模式下读取PDU格式短信

qosa_sms_delete_async()

异步删除短信

qosa_sms_get_stor_info()

查询SIM卡的短信存储信息

qosa_sms_get_config()

获取 3GPP TS 27.005 中定义的短信相关AT指令配置参数

qosa_sms_set_config()

设置 3GPP TS 27.005 中定义的短信相关AT指令配置参数

qosa_sms_get_sca()

获取短信中心号码

qosa_sms_set_sca()

设置短信中心号码

qosa_sms_text_to_pdu()

将文本格式短信转换为PDU格式短信

qosa_sms_text_to_address()

转换文本格式地址为二进制格式地址

qosa_sms_address_to_text()

转换二进制格式地址为文本格式地址

函数详解

qosa_sms_send_pdu_async

  • 功能描述
    异步模式下发送PDU格式短信,无需提前将报文写入短信存储器。

  • 函数原型

qosa_sms_err_e qosa_sms_send_pdu_async(qosa_uint8_t simid, qosa_sms_send_param_t *send, sms_callback_t cb, void *ctx);
  • 参数说明

参数名

输入/输出

类型

说明

simid

输入

qosa_uint8_t

SIM ID
0:SIM卡1
1:SIM卡2

send

输入

qosa_sms_send_param_t *

PDU格式短信参数;详见 qosa_sms_send_param_t

cb

输入

sms_callback_t

发送结果回调函数;详见 sms_callback_t

ctx

输入

void *

用户自定义上下文

  • 返回值说明
    QOSA_SMS_SUCCESS:函数执行成功
    其他值:函数执行失败;详见 qosa_sms_err_e

备注

必须在PDU数据内正确填充目标地址DA字段,否则短信无法正常发送。

sms_callback_t

  • 函数原型

typedef void (*sms_callback_t)(void *ctx, void *argv);
  • 参数说明

参数名

输入/输出

类型

说明

ctx

输入

void *

用户上下文指针

argv

输入

void *

回调参数指针

qosa_sms_read_pdu_async

  • 功能描述
    异步模式下读取PDU格式短信。

  • 函数原型

qosa_sms_err_e qosa_sms_read_pdu_async(qosa_uint8_t simid, qosa_sms_read_param_t *read, sms_callback_t cb, void *ctx);
  • 参数说明

参数名

输入/输出

类型

说明

simid

输入

qosa_uint8_t

SIM ID
0:SIM卡1
1:SIM卡2

read

输入

*qosa_sms_read_param_t **

PDU格式短信参数;详见 qosa_sms_read_param_t

cb

输入

sms_callback_t

读取结果回调函数;详见 sms_callback_t

ctx

输入

void *

用户自定义上下文

  • 返回值说明
    QOSA_SMS_SUCCESS:函数执行成功
    其他值:函数执行失败;详见 qosa_sms_err_e

备注

此函数为异步接口,原始PDU格式短信数据通过回调函数返回,需自行解析。

qosa_sms_delete_async

  • 功能描述
    异步模式下删除短信,支持按单条索引精准删除,也支持按规则批量删除。

  • 函数原型

qosa_sms_err_e qosa_sms_delete_async(qosa_uint8_t simid, qosa_sms_delete_param_t *delete, sms_callback_t cb, void *ctx);
  • 参数说明

参数名

输入/输出

类型

说明

simid

输入

qosa_uint8_t

SIM ID
0:SIM卡1
1:SIM卡2

delete

输入

qosa_sms_delete_param_t *

删除短信的配置;详见 qosa_sms_delete_param_t

cb

输入

sms_callback_t

删除结果回调函数;详见 sms_callback_t

ctx

输入

void *

用户自定义上下文

  • 返回值说明
    QOSA_SMS_SUCCESS:函数执行成功
    其他值:函数执行失败;详见 qosa_sms_err_e

备注

  1. 若按索引删除,需将 index_or_stat 配置为 QOSA_SMS_SELECT_BY_INDEX,并赋值 index 索引号。

  2. 若按规则批量删除,需将 index_or_stat 配置为 QOSA_SMS_SELECT_BY_STATUS,并配置 delflag 删除规则。

qosa_sms_get_stor_info

  • 功能描述
    查询SIM卡的短信存储信息。

  • 函数原型

qosa_sms_err_e qosa_sms_get_stor_info(qosa_uint8_t simid, qosa_sms_stor_info_t *info);
  • 参数说明

参数名

输入/输出

类型

说明

simid

输入

qosa_uint8_t

SIM ID
0:SIM卡1
1:SIM卡2

info

输出

*qosa_sms_stor_info_t **

短信存储信息;详见 qosa_sms_stor_info_t

  • 返回值说明
    QOSA_SMS_SUCCESS:函数执行成功
    其他值:函数执行失败;详见 qosa_sms_err_e

qosa_sms_get_config

  • 功能描述
    获取 3GPP TS 27.005 中定义的短信相关AT指令配置参数。

  • 函数原型

qosa_sms_err_e qosa_sms_get_config(qosa_uint8_t simid, qosa_sms_cfg_t *cfg);
  • 参数说明

参数名

输入/输出

类型

说明

simid

输入

qosa_uint8_t

SIM ID
0:SIM卡1
1:SIM卡2

cfg

输出

*qosa_sms_cfg_t **

短信配置参数信息;详见 qosa_sms_cfg***_t***

  • 返回值说明
    QOSA_SMS_SUCCESS
    其他值:函数执行失败;详见 qosa_sms_err_e

qosa_sms_set_config

  • 功能描述
    设置 3GPP TS 27.005 中定义的短信相关AT指令配置参数。

  • 函数原型

qosa_sms_err_e qosa_sms_set_config(qosa_uint8_t simid, qosa_sms_cfg_t *cfg);
  • 参数说明

参数名

输入/输出

类型

说明

simid

输入

qosa_uint8_t

SIM ID
0:SIM卡1
1:SIM卡2

cfg

输入

*qosa_sms_cfg_t **

短信配置参数信息;详见 qosa_sms_cfg***_t***

  • 返回值说明
    QOSA_SMS_SUCCESS:函数执行成功
    其他值:函数执行失败;详见 qosa_sms_err_e

qosa_sms_get_sca

  • 功能描述
    获取短信中心号码。

  • 函数原型

qosa_sms_err_e qosa_sms_get_sca(qosa_uint8_t simid, qosa_sms_address_info_t *sca);
  • 参数说明

参数名

输入/输出

类型

说明

simid

输入

qosa_uint8_t

SIM ID
0:SIM卡1
1:SIM卡2

sca

输出

*qosa_sms_address_info_t **

短信中心号码;详见 qosa_sms_address_info_t

  • 返回值说明
    QOSA_SMS_SUCCESS:函数执行成功
    其他值:函数执行失败;详见 qosa_sms_err_e

qosa_sms_set_sca

  • 功能描述
    设置短信中心号码。

  • 函数原型

qosa_sms_err_e qosa_sms_set_sca(qosa_uint8_t simid, qosa_sms_address_info_t *sca);
  • 参数说明

参数名

输入/输出

类型

说明

simid

输入

qosa_uint8_t

SIM ID
0:SIM卡1
1:SIM卡2

sca

输入

*qosa_sms_address_info_t **

短信中心号码;详见 qosa_sms_address_info_t

  • 返回值说明
    QOSA_SMS_SUCCESS:函数执行成功
    其他值:函数执行失败;详见 qosa_sms_err_e

qosa_sms_text_to_pdu

  • 功能描述
    将文本格式短信转换为PDU格式短信。

  • 函数原型

qosa_sms_err_e qosa_sms_text_to_pdu(qosa_sms_msg_t *msg, qosa_sms_record_t *record);
  • 参数说明

参数名

输入/输出

类型

说明

msg

输入

*qosa_sms_msg_t **

文本格式短信;详见 qosa_sms_msg_t

record

输出

*qosa_sms_record_t **

PDU格式短信;详见 qosa_sms_record_t

  • 返回值说明
    QOSA_SMS_SUCCESS:函数执行成功
    其他值:函数执行失败;详见 qosa_sms_err_e

备注

在上行短信场景下,需要预先在 qosa_sms_msg_t 结构体中手动填充 fopiddcsvp 字段。

qosa_sms_text_to_address

  • 功能描述
    转换文本格式地址为二进制格式地址。

  • 函数原型

qosa_sms_err_e qosa_sms_text_to_address(char *text, qosa_uint16_t len, qosa_uint8_t address_type, qosa_sms_address_info_t *address);
  • 参数说明

参数名

输入/输出

类型

说明

text

输入

char *

文本格式地址

len

输入

qosa_uint16_t

地址长度

address_type

输入

qosa_uint8_t

地址类型
129:未知/普通号码
145:国际号码,号码前带 “+”
161:国内号码
177:网络特定号码
193:用户号码
209:字母数字号码
225:缩位号码
241:保留

address

输出

*qosa_sms_address_info_t **

二进制格式地址;详见 qosa_sms_address_info_t

  • 返回值说明
    QOSA_SMS_SUCCESS:函数执行成功
    其他值:函数执行失败;详见 qosa_sms_err_e

qosa_sms_address_to_text

  • 功能描述
    转换二进制格式地址为文本格式地址。

  • 函数原型

qosa_sms_err_e qosa_sms_address_to_text(qosa_sms_address_info_t *address, char *text, qosa_uint16_t len);
  • 参数说明

参数名

输入/输出

类型

说明

address

输入

*qosa_sms_address_info_t **

二进制格式地址;详见 qosa_sms_address_info_t

text

输出

char *

文本格式地址

len

输入

qosa_uint16_t

地址长度

  • 返回值说明
    QOSA_SMS_SUCCESS:函数执行成功
    其他值:函数执行失败;详见 qosa_sms_err_e

结构体定义

qosa_sms_send_param_t

PDU格式短信参数结构体定义如下:

typedef struct{
    qosa_sms_pdu_t pdu;
} qosa_sms_send_param_t;

参数

类型

说明

pdu

qosa_sms_pdu_t

PDU数据;详见 qosa_sms_pdu_t

qosa_sms_pdu_t

PDU数据结构体定义如下:

typedef struct{
    qosa_uint8_t data_len;                   
    qosa_uint8_t data[QOSA_SMS_PDU_MAX_LEN]; 
} qosa_sms_pdu_t;

参数

类型

说明

data_len

qosa_uint8_t

TPDU总字节长度(区分SCA前缀)

data

qosa_uint8_t

包含SCA前缀的完整PDU字节数组;最大长度:176字节

qosa_sms_read_param_t

读取PDU格式短信的配置结构体定义如下:

typedef struct{
    qosa_sms_stor_e stor;  
    qosa_uint16_t   index; 
} qosa_sms_read_param_t;

参数

类型

说明

stor

qosa_sms_stor_e

待读取的短信存储器;详见 qosa_sms_stor_e

index

qosa_uint16_t

待读取的短信索引,从0开始计数

qosa_sms_delete_param_t

删除短信的配置结构体定义如下:

typedef struct
{
    qosa_sms_stor_e        stor;
    qosa_sms_select_type_e index_or_stat;
    qosa_uint16_t          index;
    qosa_sms_delflag_e     delflag;
} qosa_sms_delete_param_t;

参数

类型

说明

stor

qosa_sms_stor_e

短信存储器;详见 qosa_sms_stor_e

index_or_stat

qosa_sms_select_type_e

删除模式;详见 qosa_sms_select_type_e

index

qosa_uint16_t

短信索引

delflag

qosa_sms_delflag_e

短信删除规则;详见 qosa_sms_delflag_e

qosa_sms_stor_info_t

短信存储信息结构体定义如下:

typedef struct{
    qosa_uint16_t used_sm;  
    qosa_uint16_t total_sm; 
    qosa_uint16_t used_me;  
    qosa_uint16_t total_me; 
} qosa_sms_stor_info_t;

参数

类型

说明

used_sm

qosa_uint16_t

SIM卡已用存储容量

total_sm

qosa_uint16_t

SIM卡总存储容量

used_me

qosa_uint16_t

移动设备(ME)已用存储容量

total_me

qosa_uint16_t

移动设备(ME)总存储容量

qosa_sms_cfg_t

短信配置参数信息结构体定义如下:

typedef struct{
    qosa_uint8_t mem1; 
    qosa_uint8_t mem2; 
    qosa_uint8_t mem3; 
    qosa_uint8_t nmi_mode; 
    qosa_uint8_t nmi_mt;   
    qosa_uint8_t nmi_bm;  
    qosa_uint8_t nmi_ds; 
    qosa_uint8_t nmi_bfr; 
    qosa_uint8_t service_mode; 
    qosa_uint8_t text_fo;  
    qosa_uint8_t text_pid; 
    qosa_uint8_t text_dcs; 
    qosa_uint8_t text_vp;  
} qosa_sms_cfg_t;

参数

类型

说明

mem1

qosa_uint8_t

存储器1:用于读取和删除短信;范围:0~255;实际根据模块内存分配决定

mem2

qosa_uint8_t

存储器2:用于写入和发送短信;范围:0~255;实际根据模块内存分配决定

mem3

qosa_uint8_t

存储器3:用于存储接收到的短信;范围:0~255;实际根据模块内存分配决定

nmi_mode

qosa_uint8_t

新消息上报总模式;范围:0~255;实际取值请参考 3GPP TS 27.005

nmi_mt

qosa_uint8_t

新短信消息上报规则;范围:0~255;实际取值请参考 3GPP TS 27.005

nmi_bm

qosa_uint8_t

小区广播消息上报规则;范围:0~255;实际取值请参考 3GPP TS 27.005

nmi_ds

qosa_uint8_t

短信送达状态报告上报规则;范围:0~255;实际取值请参考 3GPP TS 27.005

nmi_bfr

qosa_uint8_t

缓冲区满时新消息处理规则;范围:0~255;实际取值请参考 3GPP TS 27.005

service_mode

qosa_uint8_t

短信服务运行模式;范围:0~255;实际取值请参考 3GPP TS 27.005

text_fo

qosa_uint8_t

文本模式下短信PDU首字节;范围:0~255;实际取值请参考 3GPP TS 27.005

text_pid

qosa_uint8_t

文本模式下的协议标识符;范围:0~255;实际取值请参考 3GPP TS 27.005

text_dcs

qosa_uint8_t

文本模式下的数据编码方案;范围:0~255;实际取值请参考 3GPP TS 27.005

text_vp

qosa_uint8_t

文本模式下的短信有效期;范围:0~255;具体计算方式请参考
3GPP TS 23.040 9.2.3.12.1 TP-VP (Relative format)

qosa_sms_address_info_t

短信地址结构体定义如下:

typedef struct{
    qosa_uint8_t address_type;                         
    qosa_uint8_t address_len;                         
    qosa_uint8_t address_number[QOSA_ADDRESS_MAX_LEN]; 
} qosa_sms_address_info_t;

参数

类型

说明

address_type

qosa_uint8_t

地址类型
129:未知/普通号码
145:国际号码,号码前带“+”
161:国内号码
177:网络特定号码
193:用户号码
209:字母数字号码
225:缩位号码
241:保留

address_len

qosa_uint8_t

地址长度,即号码的数字位数

address_number

qosa_uint8_t

地址号码

qosa_sms_msg_t

文本格式短信结构体定义如下:

typedef struct{
    qosa_sms_msg_type_e msg_type;
    union
    {
        qosa_sms_send_t send;     
        qosa_sms_recv_t recv;    
        qosa_sms_rept_t report;  
    } text; 

    qosa_bool_t       is_concatenated; 
    qosa_sms_concat_t concat;       
} qosa_sms_msg_t;

参数

类型

说明

msg_type

qosa_sms_msg_type_e

消息类型;详见 qosa_sms_msg_type_e

send

qosa_sms_send_t

发送消息;详见 qosa_sms_send_t

recv

qosa_sms_recv_t

接收消息;详见 qosa_sms_recv_t

report

qosa_sms_rept_t

状态报告;详见 qosa_sms_rept_t

is_concatenated

qosa_bool_t

当前消息是否为长短信的拼接部分
QOSA_TRUE:是
QOSA_FALSE:否

concat

qosa_sms_concat_t

长短信拼接信息;详见 qosa_sms_concat_t;此参数仅当 is_concatenatedQOSA_TRUE 时生效

qosa_sms_record_t

PDU格式短信结构体定义如下:

typedef struct{
    qosa_uint16_t       index;    
    qosa_sms_status_e   status;  
    qosa_sms_msg_type_e msg_type;
    qosa_sms_pdu_t      pdu;     
} qosa_sms_record_t;

参数

类型

说明

index

qosa_uint16_t

短信索引

status

qosa_sms_status_e

短信状态;详见 qosa_sms_status_e

msg_type

qosa_sms_msg_type_e

消息类型;详见 qosa_sms_msg_type_e

pdu

qosa_sms_pdu_t

PDU数据;详见 qosa_sms_pdu_t

qosa_sms_send_t

发送消息结构体定义如下:

typedef struct{
    qosa_uint16_t     index;  
    qosa_sms_status_e status;

    char         sca[QOSA_ADDRESS_MAX_LEN * 4 + 1]; 
    qosa_uint8_t tosca;                            
    qosa_uint8_t fo;                               
    char         da[QOSA_ADDRESS_MAX_LEN * 4 + 1]; 
    qosa_uint8_t toda;                             
    qosa_uint8_t pid;                             
    qosa_uint8_t dcs;                              
    qosa_uint8_t vp;                             

    qosa_uint16_t data_len;                          
    qosa_uint8_t  data[QOSA_SMS_PDU_MAX_LEN * 4 + 1]; 
    qosa_uint8_t  data_chset;                        
} qosa_sms_send_t;

参数

类型

说明

index

qosa_uint16_t

短信索引

status

qosa_sms_status_e

短信状态;详见 qosa_sms_status_e

sca

char

短信中心地址;最大长度:21字节

tosca

qosa_uint8_t

短信中心地址类型
129:未知/普通号码
145:国际号码,号码前带“+”
161:国内号码
177:网络特定号码
193:用户号码
209:字母数字号码
225:缩位号码
241:保留

fo

qosa_uint8_t

PDU首字节;默认值:17

da

char

目的地址,即接收方地址

toda

qosa_uint8_t

目的地址类型
129:未知/普通号码
145:国际号码,号码前带“+”
161:国内号码
177:网络特定号码
193:用户号码
209:字母数字号码
225:缩位号码
241:保留

pid

qosa_uint8_t

协议标识符
0:普通短信
64:Type 0短信,接收端通常不显示
65~71:替换短信,同类型新短信会替换旧短信
127:SIM数据下载短信

dcs

qosa_uint8_t

数据编码方案
0:GSM 7-bit默认编码
4:8-bit数据编码
8:UCS2编码,常用于中文短信

vp

qosa_uint8_t

有效期;具体计算方式请参考
3GPP TS 23.040 9.2.3.12.1 TP-VP (Relative format)

data_len

qosa_uint16_t

数据长度;文本模式下为数据字节数,PDU模式下为TPDU字节长度

data

qosa_uint8_t

数据内容;文本模式下仅包含TP用户数据中的短信内容,PDU模式下包含所有PDU数据;最大长度:176字节

data_chset

qosa_uint8_t

数据字符集;文本模式下为数据字符集,PDU模式下为TPDU字符集

qosa_sms_recv_t

接收消息结构体定义如下:

typedef struct{
    qosa_uint16_t     index; 
    qosa_sms_status_e status;

    char                  sca[QOSA_ADDRESS_MAX_LEN * 4 + 1];  
    qosa_uint8_t          tosca;                              
    qosa_uint8_t          fo;                                
    char                  oa[QOSA_ADDRESS_MAX_LEN * 4 + 1];   
    qosa_uint8_t          tooa;                               
    qosa_uint8_t          pid;                                
    qosa_uint8_t          dcs;                               
    qosa_sms_time_stamp_t scts;                               

    qosa_uint16_t data_len;                           
    qosa_uint8_t  data[QOSA_SMS_PDU_MAX_LEN * 4 + 1]; 
    qosa_uint8_t  data_chset;                         
} qosa_sms_recv_t;

参数

类型

说明

index

qosa_uint16_t

短信索引

status

qosa_sms_status_e

短信状态;详见 qosa_sms_status_e

sca

char

短信中心地址;最大长度:21字节

tosca

qosa_uint8_t

短信中心地址类型
129:未知/普通号码
145:国际号码,号码前带“+”
161:国内号码
177:网络特定号码
193:用户号码
209:字母数字号码
225:缩位号码
241:保留

fo

qosa_uint8_t

PDU首字节;默认值:17

oa

char

源地址,即发送方地址;最大长度:21字节

toda

qosa_uint8_t

源地址类型
129:未知/普通号码
145:国际号码,号码前带“+”
161:国内号码
177:网络特定号码
193:用户号码
209:字母数字号码
225:缩位号码
241:保留

pid

qosa_uint8_t

协议标识符
0:普通短信
64:Type 0短信,接收端通常不显示
65~71:替换短信,同类型新短信会替换旧短信
127:SIM数据下载短信

dcs

qosa_uint8_t

数据编码方案
0:GSM 7-bit默认编码
4:8-bit数据编码
8:UCS2编码,常用于中文短信

scts

qosa_sms_time_stamp_t

短信中心时间戳;详见 qosa_sms_time_stamp_t

data_len

qosa_uint16_t

数据长度;文本模式下为数据字节数,PDU模式下为TPDU字节长度

data

qosa_uint8_t

数据内容;文本模式下仅包含TP用户数据中的短信内容,PDU模式下包含所有PDU数据;最大长度:176字节

data_chset

qosa_uint8_t

数据字符集;文本模式下为数据字符集,PDU模式下为TPDU字符集

qosa_sms_rept_t

状态报告结构体定义如下:

typedef struct{
    qosa_uint16_t     index;   
    qosa_sms_status_e status; 

    char                  sca[QOSA_ADDRESS_MAX_LEN * 4 + 1];  
    qosa_uint8_t          tosca;                              
    qosa_uint8_t          fo;                                
    qosa_uint8_t          mr;                                
    char                  ra[QOSA_ADDRESS_MAX_LEN * 4 + 1];  
    qosa_uint8_t          tora;                             
    qosa_sms_time_stamp_t scts;                              
    qosa_sms_time_stamp_t dt;                               
    qosa_uint8_t          st;                               
} qosa_sms_rept_t;

参数

类型

说明

index

qosa_uint16_t

短信索引

status

qosa_sms_status_e

短信状态;详见 qosa_sms_status_e

sca

char

短信中心地址;最大长度:21字节

tosca

qosa_uint8_t

短信中心地址类型
129:未知/普通号码
145:国际号码,号码前带“+”
161:国内号码
177:网络特定号码
193:用户号码
209:字母数字号码
225:缩位号码
241:保留

fo

qosa_uint8_t

PDU首字节;默认值:17

mr

qosa_uint8_t

消息参考编号

ra

char

目的地址,即接收方地址;最大长度:21字节

tora

qosa_uint8_t

目的地址类型
129:未知/普通号码
145:国际号码,号码前带“+”
161:国内号码
177:网络特定号码
193:用户号码
209:字母数字号码
225:缩位号码
241:保留

scts

qosa_sms_time_stamp_t

短信中心时间戳,即SMSC最初接收该消息的时间;详见 qosa_sms_time_stamp_t

dt

qosa_sms_time_stamp_t

放电时间戳,即SMSC完成投递或放弃投递的时间;详见 qosa_sms_time_stamp_t

st

qosa_uint8_t

TP投递状态码
0x00:投递成功
0x20~0x3F:临时错误,短信中心还会重试
0x40~0x5F:永久错误,不再重试
0x60~0x7F:临时错误,但不再重试

qosa_sms_time_stamp_t

时间戳结构体定义如下:

typedef struct{
    qosa_uint8_t year;  
    qosa_uint8_t month;  
    qosa_uint8_t day;   
    qosa_uint8_t hour;   
    qosa_uint8_t minute; 
    qosa_uint8_t second; 
    qosa_int8_t  zone;  
} qosa_sms_time_stamp_t;

参数

类型

说明

year

qosa_uint8_t

month

qosa_uint8_t

day

qosa_uint8_t

hour

qosa_uint8_t

小时

minute

qosa_uint8_t

分钟

second

qosa_uint8_t

zone

qosa_int8_t

时区;相对于UTC的时区偏移量,以15分钟为单位,正数为东时区,负数为西时区
例如:zone = 32 时,32 × 15 = 480 分钟,即东八区UTC+8北京时间

qosa_sms_concat_t

长短信拼接信息结构体定义如下:

typedef struct{
    qosa_uint16_t msg_ref_number;
    qosa_uint8_t  msg_seg;       
    qosa_uint8_t  msg_total;    
} qosa_sms_concat_t;

参数

类型

说明

msg_ref_number

qosa_uint16_t

消息参考编号

msg_seg

qosa_uint8_t

消息段序号

msg_total

qosa_uint8_t

消息段总数

枚举定义

qosa_sms_err_e

SMS结果码枚举定义如下:

typedef enum
{
    QOSA_SMS_SUCCESS = 0,
    QOSA_SMS_CMS_UNASSIGNED_NUM       = 1 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_OPER_DETERM_BARR     = 8 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_CALL_BARRED          = 10 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SM_TRANS_REJE        = 21 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),    QOSA_SMS_CMS_DEST_OOS             = 27 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_UNINDENT_SUB         = 28 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_FACILIT_REJE         = 29 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_UNKNOWN_SUB          = 30 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_NW_OOO               = 38 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_TEMP_FAIL            = 41 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),    QOSA_SMS_CMS_CONGESTION           = 42 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_RES_UNAVAILABLE      = 47 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_REQ_FAC_NOT_SUB      = 50 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_RFQ_FAC_NOT_IMP      = 69 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INVALID_SM_TRV       = 81 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INVALID_MSG          = 95 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INVALID_MAND_INFO    = 96 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),    QOSA_SMS_CMS_MSG_TYPE_ERROR       = 97 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_MSG_NOT_COMP         = 98 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INFO_ELEMENT_ERROR   = 99 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_PROT_ERROR           = 111 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_IW_UNSPEC            = 127 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_TEL_IW_NOT_SUPP      = 128 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),    QOSA_SMS_CMS_UNSPEC_TP_ERROR      = 143 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_DCS_NOT_SUPP         = 144 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_MSG_CLASS_NOT_SUPP   = 145 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_UNSPEC_TD_ERROR      = 159 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_CMD_CANNOT_ACT       = 160 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_CMD_UNSUPP           = 161 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_UNSPEC_TC_ERROR      = 175 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),    QOSA_SMS_CMS_TPDU_NOT_SUPP        = 176 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SC_BUSY              = 192 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_NO_SC_SUB            = 193 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SC_SYS_FAIL          = 194 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INVALID_SME_ADDR     = 195 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_DEST_SME_BARR        = 196 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SM_RD_SM             = 197 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),    QOSA_SMS_CMS_TP_VPF_NOT_SUPP      = 198 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_TP_VP_NOT_SUPP       = 199 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_D0_SIM_SMS_STO_FULL  = 208 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_NO_SMS_STO_IN_SIM    = 209 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_ERR_IN_MS            = 210 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_MEM_CAP_EXCEEDED     = 211 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SIM_APP_TK_BUSY      = 212 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),    QOSA_SMS_CMS_SIM_DATA_DL_ERROR    = 213 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_UNSPEC_ERROR_CAUSE   = 255 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_ME_FAIL              = 300 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SMS_SERVICE_RESERVED = 301 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_OPER_NOT_ALLOWED     = 302 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_OPER_NOT_SUPP        = 303 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),    QOSA_SMS_CMS_INVALID_PDU_PARAM    = 304 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INVALID_TXT_PARAM    = 305 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SIM_NOT_INSERT       = 310 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SIM_PIN_REQUIRED     = 311 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_PH_SIM_PIN_REQUIRED  = 312 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SIM_FAIL             = 313 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SIM_BUSY             = 314 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SIM_WRONG            = 315 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),    QOSA_SMS_CMS_SIM_PUK_REQUIRED     = 316 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SIM_PIN2_REQUIRED    = 317 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SIM_PUK2_REQUIRED    = 318 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_MEM_FAIL             = 320 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INVALID_MEM_INDEX    = 321 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_MEM_FULL             = 322 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_SCA_ADDR_UNKNOWN     = 330 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),    QOSA_SMS_CMS_NO_NW_SERVICE        = 331 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_NW_TIMEOUT           = 332 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_NO_CNMA_ACK_EXPECTED = 340 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_UNKNOWN_ERROR        = 500 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_USER_ABORT           = 512 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_UNABLE_TO_STORE      = 513 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INVALID_STATUS       = 514 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),    QOSA_SMS_CMS_INVALID_ADDR_CHAR    = 515 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INVALID_LEN          = 516 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INVALID_PDU_CHAR     = 517 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INVALID_PARA         = 518 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INVALID_LEN_OR_CHAR  = 519 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_INVALID_TXT_CHAR     = 520 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),
    QOSA_SMS_CMS_TIMER_EXPIRED        = 521 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),    QOSA_SMS_CMS_SMS_SEND_FAIL        = 530 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_CMS_OFS),

    QOSA_SMS_ERROR                    = 1 | (QOSA_ERRCODE_SMS_BASE + QOSA_AT_ERR_OFS),
    QOSA_SMS_NOT_INIT_ERR,
    QOSA_SMS_NO_MSG_ERR,
} qosa_sms_err_e;

成员

说明

QOSA_SMS_SUCCESS

函数执行成功

QOSA_SMS_CMS_UNASSIGNED_NUM

未分配的号码

QOSA_SMS_CMS_OPER_DETERM_BARR

运营商限制

QOSA_SMS_CMS_CALL_BARRED

呼叫限制

QOSA_SMS_CMS_SM_TRANS_REJE

短消息传输拒绝

QOSA_SMS_CMS_DEST_OOS

接收方不在服务区

QOSA_SMS_CMS_UNINDENT_SUB

未识别的订阅者

QOSA_SMS_CMS_FACILIT_REJE

设施拒绝

QOSA_SMS_CMS_UNKNOWN_SUB

未知用户

QOSA_SMS_CMS_NW_OOO

网络脱机

QOSA_SMS_CMS_TEMP_FAIL

临时性网络故障

QOSA_SMS_CMS_CONGESTION

网络拥塞

QOSA_SMS_CMS_RES_UNAVAILABLE

资源不可用

QOSA_SMS_CMS_REQ_FAC_NOT_SUB

请求的设施未订阅

QOSA_SMS_CMS_RFQ_FAC_NOT_IMP

请求的设施未实现

QOSA_SMS_CMS_INVALID_SM_TRV

无效的短消息传输参考

QOSA_SMS_CMS_INVALID_MSG

无效消息

QOSA_SMS_CMS_INVALID_MAND_INFO

无效的必要信息

QOSA_SMS_CMS_MSG_TYPE_ERROR

消息类型错误

QOSA_SMS_CMS_MSG_NOT_COMP

消息不兼容

QOSA_SMS_CMS_INFO_ELEMENT_ERROR

信息元素错误

QOSA_SMS_CMS_PROT_ERROR

协议错误

QOSA_SMS_CMS_IW_UNSPEC

互操作性问题-未指定

QOSA_SMS_CMS_TEL_IW_NOT_SUPP

不支持的终端互操作

QOSA_SMS_CMS_UNSPEC_TP_ERROR

未指定的传输协议错误

QOSA_SMS_CMS_DCS_NOT_SUPP

不支持的数据编码方案

QOSA_SMS_CMS_MSG_CLASS_NOT_SUPP

不支持的消息类别

QOSA_SMS_CMS_UNSPEC_TD_ERROR

未指定的传输描述错误

QOSA_SMS_CMS_CMD_CANNOT_ACT

命令无法执行

QOSA_SMS_CMS_CMD_UNSUPP

不支持的命令

QOSA_SMS_CMS_UNSPEC_TC_ERROR

未指定的传输控制错误

QOSA_SMS_CMS_TPDU_NOT_SUPP

不支持的TPDU

QOSA_SMS_CMS_SC_BUSY

短信中心繁忙

QOSA_SMS_CMS_NO_SC_SUB

未订阅短消息中心

QOSA_SMS_CMS_SC_SYS_FAIL

短消息中心系统故障

QOSA_SMS_CMS_INVALID_SME_ADDR

无效的SME地址

QOSA_SMS_CMS_DEST_SME_BARR

目标SME被限制

QOSA_SMS_CMS_SM_RD_SM

短消息已删除

QOSA_SMS_CMS_TP_VPF_NOT_SUPP

不支持的有效期格式

QOSA_SMS_CMS_TP_VP_NOT_SUPP

不支持的有效期值

QOSA_SMS_CMS_D0_SIM_SMS_STO_FULL

SIM卡短信存储空间已满

QOSA_SMS_CMS_NO_SMS_STO_IN_SIM

SIM无短信存储区

QOSA_SMS_CMS_ERR_IN_MS

移动台内部错误

QOSA_SMS_CMS_MEM_CAP_EXCEEDED

内存容量超限

QOSA_SMS_CMS_SIM_APP_TK_BUSY

SIM卡应用工具包繁忙

QOSA_SMS_CMS_SIM_DATA_DL_ERROR

SIM卡数据读写失败

QOSA_SMS_CMS_UNSPEC_ERROR_CAUSE

未指定的错误原因

QOSA_SMS_CMS_ME_FAIL

移动设备故障

QOSA_SMS_CMS_SMS_SERVICE_RESERVED

短信服务被保留

QOSA_SMS_CMS_OPER_NOT_ALLOWED

操作权限被运营商限制

QOSA_SMS_CMS_OPER_NOT_SUPP

当前操作运营商不支持

QOSA_SMS_CMS_INVALID_PDU_PARAM

无效的PDU参数

QOSA_SMS_CMS_INVALID_TXT_PARAM

无效的文本参数

QOSA_SMS_CMS_SIM_NOT_INSERT

未检测到SIM卡

QOSA_SMS_CMS_SIM_PIN_REQUIRED

需要输入SIM PIN解锁

QOSA_SMS_CMS_PH_SIM_PIN_REQUIRED

需要手机锁PIN验证

QOSA_SMS_CMS_SIM_FAIL

SIM卡操作失败

QOSA_SMS_CMS_SIM_BUSY

SIM卡繁忙

QOSA_SMS_CMS_SIM_WRONG

SIM卡错误

QOSA_SMS_CMS_SIM_PUK_REQUIRED

SIM卡已锁,需要PUK解锁

QOSA_SMS_CMS_SIM_PIN2_REQUIRED

需要SIM PIN2

QOSA_SMS_CMS_SIM_PUK2_REQUIRED

需要SIM PUK2码解锁

QOSA_SMS_CMS_MEM_FAIL

内存操作失败

QOSA_SMS_CMS_INVALID_MEM_INDEX

无效的存储索引

QOSA_SMS_CMS_MEM_FULL

存储器已满

QOSA_SMS_CMS_SCA_ADDR_UNKNOWN

未知的SCA地址

QOSA_SMS_CMS_NO_NW_SERVICE

无网络服务

QOSA_SMS_CMS_NW_TIMEOUT

网络超时

QOSA_SMS_CMS_NO_CNMA_ACK_EXPECTED

网络下行通知无应答

QOSA_SMS_CMS_UNKNOWN_ERROR

未知错误

QOSA_SMS_CMS_USER_ABORT

用户主动中止短信操作

QOSA_SMS_CMS_UNABLE_TO_STORE

无法存储

QOSA_SMS_CMS_INVALID_STATUS

无效状态

QOSA_SMS_CMS_INVALID_ADDR_CHAR

无效地址字符

QOSA_SMS_CMS_INVALID_LEN

无效长度

QOSA_SMS_CMS_INVALID_PDU_CHAR

无效的PDU字符

QOSA_SMS_CMS_INVALID_PARA

无效的参数

QOSA_SMS_CMS_INVALID_LEN_OR_CHAR

无效的长度或字符

QOSA_SMS_CMS_INVALID_TXT_CHAR

无效的文本字符

QOSA_SMS_CMS_TIMER_EXPIRED

定时器超时

QOSA_SMS_CMS_SMS_SEND_FAIL

短信发送失败

QOSA_SMS_ERROR

通用错误

QOSA_SMS_NOT_INIT_ERR

功能未初始化

QOSA_SMS_NO_MSG_ERR

无可用消息

qosa_sms_stor_e

短信存储器枚举定义如下:

typedef enum{
    QOSA_SMS_STOR_ME = 0, 
    QOSA_SMS_STOR_SM = 1, 
} qosa_sms_stor_e;

成员

说明

QOSA_SMS_STOR_ME

移动设备(ME)存储器

QOSA_SMS_STOR_SM

SIM卡存储器

qosa_sms_select_type_e

删除模式枚举定义如下:

typedef enum
{
    QOSA_SMS_SELECT_BY_INDEX, 
    QOSA_SMS_SELECT_BY_STATUS, 
} qosa_sms_select_type_e;

成员

说明

QOSA_SMS_SELECT_BY_INDEX

按短信索引删除

QOSA_SMS_SELECT_BY_STATUS

按删除规则批量删除

qosa_sms_delflag_e

删除规则枚举定义如下:

typedef enum{
    QOSA_SMS_DEL_INDEX = 0,         
    QOSA_SMS_DEL_RECV_READ = 1,     
    QOSA_SMS_DEL_RECV_READ_SENT = 2, 
    QOSA_SMS_DEL_RECV_READ_MO = 3,  
    QOSA_SMS_DEL_ALL = 4,         
} qosa_sms_delflag_e;

成员

说明

QOSA_SMS_DEL_INDEX

删除 index 参数指定的短信

QOSA_SMS_DEL_RECV_READ

mem1 存储器中删除所有已读短信

QOSA_SMS_DEL_RECV_READ_SENT

mem1 存储器中删除所有已读短信和已发送的短信

QOSA_SMS_DEL_RECV_READ_MO

mem1 存储器中删除所有已读短信、已发送和未发送的短信

QOSA_SMS_DEL_ALL

删除 mem1 存储器中的所有短信

qosa_sms_msg_type_e

消息类型枚举定义如下:

typedef enum{
    QOSA_SMS_DELIVER = 0,      
    QOSA_SMS_SUBMIT = 1,       
    QOSA_SMS_STATUS_REPORT = 2, 
} qosa_sms_msg_type_e;

成员

说明

QOSA_SMS_DELIVER

下行短信

QOSA_SMS_SUBMIT

上行短信

QOSA_SMS_STATUS_REPORT

短信送达状态报告消息

qosa_sms_status_e

短信状态枚举定义如下:

typedef enum{
    QOSA_SMS_UNREAD = 0, 
    QOSA_SMS_READ = 1,  
    QOSA_SMS_UNSENT = 2, 
    QOSA_SMS_SENT = 3,   
    QOSA_SMS_ALL = 4, 
} qosa_sms_status_e;

成员

说明

QOSA_SMS_UNREAD

已接收但未读

QOSA_SMS_READ

已接收且已读

QOSA_SMS_UNSENT

已存储但未发送

QOSA_SMS_SENT

已存储且已发送

QOSA_SMS_ALL

所有短信

应用逻辑流程图

../../_images/board_Z0t9w98bFhsRIybVoAwcqcq7n5d.jpg

示例代码

完整示例

源码请查看https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/network/sms/sms_demo.c

发送PDU短信

源码请查看https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/network/sms/sms_pdu.c

发送英文字符短信

源码请查看https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/network/sms/sms_english.c

发送中英文字符短信(UCS2编码格式)

源码请查看https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/network/sms/sms_ucs2.c

发送中英文字符短信(文本格式)

源码请查看https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/network/sms/sms_txt.c

读取短信

源码请查看https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/network/sms/sms_read.c

删除短信

源码请查看https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/network/sms/sms_delete.c