MTK10A之短信函數解讀

提到短信,很多人最想知道的是短信列表的保存,本人也找了好久,在plutommi\service\smssrv下有一個SmsFolderListSrv.c的文件,短信列表就定義在此。

另外,提到短信的還有SmsAppSendMsg.c

static U16 srv_sms_inbox_size;
static U16 srv_sms_outbox_size;
static U16 
srv_sms_drafts_size;
#ifdef __SRV_SMS_UNSENT_LIST__
static U16 
srv_sms_unsent_size;
#endif
#ifdef __SRV_SMS_SIMBOX_SUPPORT__
static 
U16 srv_sms_sim_size;
#endif
#ifdef __SRV_SMS_ARCHIVE__
static U16 
srv_sms_archive_size;
#endif /* __SRV_SMS_ARCHIVE__ */

以上部分定義的是各個短信箱的短信數量。

static U16 srv_sms_inbox_list[SRV_SMS_MAX_SMS_ENTRY];
static U16 
srv_sms_outbox_list[SRV_SMS_MAX_SMS_ENTRY];
static U16 
srv_sms_drafts_list[SRV_SMS_MAX_SMS_ENTRY];
#ifdef 
__SRV_SMS_UNSENT_LIST__
static U16 
srv_sms_unsent_list[SRV_SMS_MAX_SMS_ENTRY];
#endif /* __SRV_SMS_UNSENT_LIST__ 
*/
#ifdef __SRV_SMS_SIMBOX_SUPPORT__
static U16 
srv_sms_sim_list[SRV_SMS_MAX_SMS_ENTRY];
#endif /* __SRV_SMS_SIMBOX_SUPPORT__ 
*/
#ifdef __SRV_SMS_ARCHIVE__
static U16 
srv_sms_archive_list[SRV_SMS_MAX_ARCH_ENTRY];
#endif /* __SRV_SMS_ARCHIVE__ 
*/

以上部分定義的是各個短信箱中信息ID列表數組。以上是短信數組的核心部分,是用戶最關心的短信列表。下面來介紹具體的列表操作函數。

void srv_sms_list_init(void):列表初始化函數

U16 srv_sms_get_unread_sms_num(void):獲取未讀短信數量函數

U16 srv_sms_get_unread_sim_sms_num(void):獲取SIM卡中未讀短信數量函數

U16 srv_sms_get_msg_id(srv_sms_box_enum msg_box_type, U16 list_index):通過短信箱類型和列表索引號獲得短信息ID,這裏說一下,列表索引號即剛纔所定義的對應數組的下標

U16 srv_sms_get_list_size(srv_sms_box_enum msg_box_type):很常用的一個函數,通過短信箱類型獲取其元素個數

srv_sms_box_enum srv_sms_get_list_type(srv_sms_status_enum status, srv_sms_storage_enum storage_type, srv_sms_folder_enum folder_id):通過短信息類型、存儲位置、文件夾屬性之一或許短信箱類型

U16 srv_sms_get_msg_list_index(srv_sms_box_enum* msg_box_type, U16 msg_id):通過短信息ID獲取短信箱類型和短信息在對應短信箱中的索引值。編程時經常不使用該函數的返回值,但是該返回值是索引值和信息ID值關聯的途徑,有時候會起到很大作用。切不可只看到srv_sms_get_msg_list_index(&msg_box_type, msg_id);就認爲該函數只能獲得短信息的信箱類型。

void srv_sms_copy_msg_list(srv_sms_box_enum msg_box_type, srv_sms_storage_enum dest_storage, srv_sms_sim_enum sim_id, SrvSmsCallbackFunc callback_func, void* user_data):拷貝所有源(手機或SIM1、SIM2卡)短信到目標位置

void srv_sms_move_msg_list(srv_sms_box_enum msg_box_type, srv_sms_storage_enum dest_storage, srv_sms_sim_enum sim_id, SrvSmsCallbackFunc callback_func, void* user_data):移動所有源短信到目標位置

void srv_sms_delete_msg_list(srv_sms_box_enum msg_box_type, srv_sms_sim_enum sim_id, SrvSmsCallbackFunc callback_func, void* user_data):刪除所有指定位置(手機或SIM1、SIM2卡)短信

再來看SmsStorageInterfaceSrv.c文件:

MMI_BOOL srv_sms_is_msg_exist(U16 msg_id):判斷信息ID爲msg_id的信息是否存在

void srv_sms_read_msg(U16 msg_id, MMI_BOOL change_status, srv_sms_msg_data_struct* msg_data, SrvSmsCallbackFunc callback_func, void *user_data):通過或msg_id讀取信息到隊列並註冊回調函數。該函數並不顯示信息內容,一般信息顯示內容在回調函數中。

void srv_sms_change_msg_status(U16 msg_id, srv_sms_status_enum status, SrvSmsCallbackFunc callback_func, void *user_data):修改信息狀態並註冊回調函數。

void srv_sms_sort_msg(U16 *msg_id_array, U16 msg_num, srv_sms_sort_enum sort_flag, srv_sms_order_enum order_flag):信息排序,目前只支持按時間排序,若需要其它排序方式可在此添加。

const S8* srv_sms_get_msg_asc_address(U16 msg_id):讀取信息地址,以ASCII字符串返回

void srv_sms_get_msg_address(U16 msg_id, S8* ucs2_addr_buff):讀取信息地址,以UCS2字符流返回

void srv_sms_get_msg_timestamp(U16 msg_id, MYTIME *time_stamp):獲取信息時間,以MYTIME類型結構體指針返回

U32 srv_sms_get_msg_timestamp_utc_sec(U16 msg_id):獲取信息時間,以UTC秒數返回

srv_sms_pid_enum srv_sms_get_msg_pid(U16 msg_id):獲得信息協議ID

srv_sms_status_enum srv_sms_get_msg_status(U16 msg_id):獲取信息狀態

srv_sms_sim_enum srv_sms_get_msg_sim_id(U16 msg_id):獲取信息所屬SIM卡

U16 srv_sms_get_msg_size(U16 msg_id):獲取信息大小

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章