SMS 短信功能

常用短信功能

例程:demo/sms

1. 宏定义

1.1. SMS_PHONE_NUMBER_MAX_LEN

电话号码最长长度

#define  SMS_PHONE_NUMBER_MAX_LEN  21

1.2. SMS_BODY_MAX_LEN

短信消息体最长长度(字节)

#define  SMS_BODY_MAX_LEN  176

2. 枚举类型

2.1. SMS_Format_t

短信格式,目前仅支持文本格式

typedef enum{
    // SMS_FORMAT_PDU  = 0, // not support now
    SMS_FORMAT_TEXT = 1, // default
    SMS_FORMAT_MAX
} SMS_Format_t;

2.2. SMS_Error_t

错误信息

typedef enum{
    SMS_ERROR_DECODE_ERROR = 0,
    SMS_ERROR_MAX
} SMS_Error_t;

2.3. SMS_Encode_Type_t

编码格式,包括ascii和unicode

typedef enum{
    SMS_ENCODE_TYPE_ASCII  = 0,
    SMS_ENCODE_TYPE_UNICODE   ,
    SMS_ENCODE_TYPE_MAX
} SMS_Encode_Type_t;

2.4. SMS_Number_Type_t

号码地区类型

typedef enum{
    SMS_NUMBER_TYPE_UNKNOWN         = 129 ,
    SMS_NUMBER_TYPE_INTERNATIONAL   = 145 ,
    SMS_NUMBER_TYPE_NATIONAL        = 161
} SMS_Number_Type_t; //SMS_Server_Center_Addr_Type_t;

2.5. SMS_Status_t

短信状态

typedef enum{
    SMS_STATUS_UNREAD                    = 0x01 ,
    SMS_STATUS_READ                      = 0x02 ,
    SMS_STATUS_UNSENT                    = 0x04 ,
    SMS_STATUS_SENT_NOT_SR_REQ           = 0x08 ,
    SMS_STATUS_SENT_SR_REQ_NOT_RECV      = 0x10 ,
    SMS_STATUS_SENT_SR_REQ_NOT_STORE     = 0x20 ,
    SMS_STATUS_SENT_SR_REQ_RECV_STORE    = 0x40 ,
    SMS_STATUS_ALL                       = 0x80 ,
    SMS_STATUS_MAX
} SMS_Status_t;

2.6. SMS_Storage_t

短信储存位置

typedef enum{
    SMS_STORAGE_FLASH    = 1,
    SMS_STORAGE_SIM_CARD = 2,
    SMS_STORAGE_MAX
} SMS_Storage_t;

3. 结构体类型

3.1. SMS_Parameter_t

短信参数

typedef struct
{
    uint8_t fo;  // default: 17
    uint8_t vp;  // default: 167
    uint8_t pid; // default: 0
    uint8_t dcs; // default: 0:English 7bit, 4:English 8 bit, 8:Unicode 2 Bytes(UCS2)
} SMS_Parameter_t;

3.2. SMS_Server_Center_Info_t

短信中心信息

typedef struct{
    char*          addr;
    SMS_Number_Type_t addrType;
} SMS_Server_Center_Info_t;

3.3. SMS_Message_Info_t

短消息

typedef struct{
    //header
    uint8_t           index;
    SMS_Status_t      status;
    SMS_Number_Type_t phoneNumberType;
    char              phoneNumber[SMS_PHONE_NUMBER_MAX_LEN];
    RTC_Time_t        time;

    //body
    uint16_t          dataLen;
    uint8_t*          data;
} SMS_Message_Info_t;

3.4. SMS_Storage_Info_t

短消息储存信息

typedef struct{
    uint16_t used;
    uint16_t total;
    uint16_t unReadRecords;
    uint16_t readRecords;
    uint16_t sentRecords;
    uint16_t unsentRecords;
    uint16_t unknownRecords;
    uint16_t storageId;
} SMS_Storage_Info_t;

4. 功能函数

4.1. SMS_SetFormat

bool SMS_SetFormat(SMS_Format_t format, SIM_ID_t simID);
功能

设置短信格式

参数
  • format:格式,目前仅支持字符格式
  • simID:卡ID,仅支持SIM0
返回值
  • 是否成功

4.2. SMS_SetParameter

bool SMS_SetParameter(SMS_Parameter_t* smsParameter,SIM_ID_t simID);
功能

设置短信参数

参数
  • smsParameter:短信参数
  • simID:卡ID,仅支持SIM0
返回值
  • 是否成功

4.3. SMS_SendMessage

bool SMS_SendMessage(const char* phoneNumber, const uint8_t* message,  uint8_t length, SIM_ID_t simID);
功能

发送短信

参数
  • phoneNumber:电话号码
  • message:短信内容,注意必须是unicode编码,可以用SMS_LocalLanguage2Unicode转换
  • length:短信长度(字节)
  • simID:固定为SIM0
返回值
  • 是否成功发送

4.4. SMS_SetServerCenterInfo

bool SMS_SetServerCenterInfo(SMS_Server_Center_Info_t* serverCenterInfo);
功能

设置短信中心信息

参数
  • serverCenterInfo:短信中心信息
返回值
  • 是否成功设置短信中心信息

4.5. SMS_GetServerCenterInfo

bool SMS_GetServerCenterInfo(SMS_Server_Center_Info_t* serverCenterInfo);
功能

获取短信中心信息

参数
  • serverCenterInfo:短信中心信息
返回值
  • 是否成功获取短信中心信息

4.6. SMS_ListMessageRequst

bool SMS_ListMessageRequst(SMS_Status_t smsStatus,SMS_Storage_t storage);
功能

请求列出保存的短信,短信信息会以事件的方式产生API_EVENT_ID_SMS_LIST_MESSAGE,具体参数看api_event.h

参数
  • smsStatus:选择列出哪些类型的短信,比如只列出未读消息SMS_STATUS_UNREAD
返回值
  • 是否成功请求读取短信

4.7. SMS_DeleteMessage

bool SMS_DeleteMessage(uint8_t index,SMS_Status_t status,SMS_Storage_t storage);
功能

删除保存的短信

参数
  • index:保存的短信的下标
  • storage:选择储存位置,flash还是SIM卡
返回值
  • 是否成功删除短信

4.8. SMS_GetStorageInfo

bool SMS_GetStorageInfo(SMS_Storage_Info_t* storageInfo, SMS_Storage_t storage);
功能

获取短信储存信息

参数
  • storageInfo:储存信息
  • storage:选择要查询的储存位置
返回值
  • 是否成功查询

4.9. SMS_SetNewMessageStorage

bool SMS_SetNewMessageStorage(SMS_Storage_t storage);
功能

选择新收到的消息储存的位置

参数
  • storage:新消息储存的位置
返回值
  • 是否成功设置新消息储存位置

4.10. SMS_GetCharset

const char* SMS_GetCharset(Charset_t charset);
功能

获取特定字符集的ascii名称

参数
  • charset:字符集
返回值
  • 对应字符集的ascii名称

4.11. SMS_Unicode2LocalLanguage

bool SMS_Unicode2LocalLanguage(uint8_t* unicodeIn, uint16_t unicodeLenIn, Charset_t localLanguage, uint8_t** localOut, uint32_t* localLenOut);
功能

unicode转本地语言

参数
  • unicodeIn:unicode编码的消息
  • unicodeLenIn:unicode编码的消息长度
  • localLanguage:要转换成的本地语言
  • localOut:转换好的本地语言
  • localLenOut:转换好的本地语言长度
返回值
  • 是否成功转换

4.12. SMS_LocalLanguage2Unicode

bool SMS_LocalLanguage2Unicode(uint8_t* localIn, uint16_t localLenIn, Charset_t localLanguage, uint8_t** unicodeOut, uint32_t* unicodeLenOut);
功能

本地语言转unicode编码

参数
  • localIn:本地语言消息体
  • localLenIn:本地语言消息体长度
  • localLanguage:本地编码格式
  • unicodeOut:转换好的unicode编码消息体
  • unicodeLenOut:转换好的unicode编码消息体长度
返回值
  • 是否成功转换

results matching ""

    No results matching ""