📄 dcw_pb_initialize.c
字号:
/*****************************************************************************
** File Name: dcw_pb_initialize.c *
** Author: ************* *
** Date: 2006-04-06 *
** Copyright: 2006 ************* All Rights *
** Description: 此文件包括 PB 的所用共用函数 *
/*****************************************************************************
** Important Edit History *
** --------------------------------------------------------------------------*
** DATE NAME DESCRIPTION *
** 2006-04-06 ************* Create *
******************************************************************************/
#ifndef _DCW_PB_INITIALIZE_C_
#define _DCW_PB_INITIALIZE_C_
#include "dcw_pb.h"
/****************************************************************************
* Function name : DCW_PB_InitGlobeValiable
* Description : 初始化 PB 的所有全局变量
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_InitGlobeValiable(void)
{
/* 初始化全局变量 */
SCI_MEMSET(&g_pb, 0, sizeof(T_PB_INFO));
SCI_MEMSET(&g_pb_simRecord, 0, sizeof(T_PB_SIM_RECORD));
SCI_MEMSET(&g_pb_nvRecord, 0, sizeof(T_PB_NV_RECORD));
SCI_MEMSET(&g_pb_numberItem, 0, sizeof(T_PB_SEARCH_NUMBER_ITEM));
SCI_MEMSET(&g_pb_bcdNum, 0, sizeof(T_PB_BCD_NUMBER));
SCI_MEMSET(&g_pb_recordItemAddr,0, sizeof(T_PB_RECORD_ITEM_ADDR));
SCI_MEMSET(&g_pb_editRect, 0, sizeof(GUI_RECT_T));
SCI_MEMSET(&g_pb_text, 0, sizeof(COMMON_MMI_TEXT_ID_E));
}
/****************************************************************************
* Function name : DCW_PB_AskReadDataFromNv
* Description : 发送消息,请求从Nv读取数据
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_AskReadDataFromNv(void)
{
T_PB_SIG_INIT_FLASH_REQ *reqPtr = PNULL;
MMI_CREATE_SIGNAL(reqPtr, PB_SIG_INIT_FLASH_REQ_E, sizeof(T_PB_SIG_INIT_FLASH_REQ), P_APP);
MMI_SEND_SIGNAL(reqPtr, DCW_PB_APPINIT);
}
/****************************************************************************
* Function name : DCW_PB_AskReadDataFromSimCard
* Description : 发送消息,请求从SIM 卡读取数据
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_AskReadDataFromSimCard(void)
{
T_PB_SIG_INIT_SIM_REQ *reqPtr = PNULL;
MMI_CREATE_SIGNAL(reqPtr, PB_SIG_INIT_SIM_REQ_E, sizeof(T_PB_SIG_INIT_SIM_REQ), P_APP);
MMI_SEND_SIGNAL(reqPtr, DCW_PB_APPINIT);
}
/****************************************************************************
* Function name : DCW_PB_ReadSimCardRecordsInfo
* Description : 此函数用于从sim里读取记录
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_ReadSimCardRecordsInfo(void)
{
uint32 i;
uint32 size;
BOOLEAN ret;
PHONEBOOK_INFO_T sim;
/* 读取SIM卡本地号码信息 */
sim = PHONEBOOK_GetFileInfo(PHONEBOOK_MSISDN_STORAGE);
g_pb.sim_localName.valid = (BOOLEAN)(sim.is_phonebook_exist && sim.is_user_need);
g_pb.sim_localName.initialize = FALSE;
g_pb.sim_localName.nameMaxLen = (uint8)MIN(sim.max_alpha_len, DCW_PB_NAME_MAX_LEN);
g_pb.sim_localName.numberMaxLen = (uint8)MIN(sim.max_normal_num_len * 2, DCW_PB_NUMBER_MAX_LEN);
g_pb.sim_localName.maxRecord = MIN(sim.max_record_num,DCW_PB_LOCAL_NAME_NUM);
g_pb.sim_localName.usedRecord = 0;
/* 读取SIM卡纪录信息 */
sim = PHONEBOOK_GetFileInfo(PHONEBOOK_SIM_STORAGE);
g_pb.sim.valid = (BOOLEAN)(sim.is_phonebook_exist && sim.is_user_need);
g_pb.sim.initialize = FALSE;
g_pb.sim.nameMaxLen = (uint8)MIN(sim.max_alpha_len, DCW_PB_NAME_MAX_LEN);
g_pb.sim.numberMaxLen = (uint8)MIN(sim.max_normal_num_len * 2, DCW_PB_NUMBER_MAX_LEN);
g_pb.sim.maxRecord = sim.max_record_num;
g_pb.sim.usedRecord = 0;
if(g_pb.sim.valid == FALSE)
{
/* SIM卡无效 */
return;
}
/* 申请sim卡的记录列表空间 */
size = sizeof(T_PB_SIM_RECORD) * g_pb.sim.maxRecord;
g_pb.sim.recordPtr = (T_PB_SIM_RECORD *)SCI_ALLOC(size);
SCI_ASSERT(g_pb.sim.recordPtr != PNULL);
SCI_MEMSET(g_pb.sim.recordPtr, 0, size);
/* 申请sim卡的id编号信息空间 */
size = (g_pb.sim.maxRecord + 7)/8;
g_pb.sim.idManager.idPtr = (uint8 *)SCI_ALLOC(size);
SCI_ASSERT(g_pb.sim.idManager.idPtr != PNULL);
SCI_MEMSET(g_pb.sim.idManager.idPtr , 0, size);
g_pb.sim.idManager.amount = g_pb.sim.maxRecord;
/* 循环读取sim卡记录 */
for(i = 0; i < g_pb.sim.maxRecord; i++)
{ /* 从sim卡的第i个记录地址读入信息 */
ret = DCW_PB_ReadOneRecordFromSim(&g_pb_simRecord, i,PHONEBOOK_SIM_STORAGE);
if(ret == TRUE)
{
/* 生成拼音编码,用于排序 */
DCW_PB_usc2ToSpell(&g_pb_simRecord.outerName, &g_pb_simRecord.innerName);
/* 生成拼音首字母编码,用于快速排序 */
DCW_PB_spellToShortSpell(&g_pb_simRecord.innerName, &g_pb_simRecord.shortName);
/* 设置编号使用的信息 */
DCW_PB_insertOneRecordToSimList(&g_pb_simRecord);
/* 设置id */
DCW_PB_setIdValue(&g_pb.sim.idManager,g_pb_simRecord.id,1);
}
}
}
/****************************************************************************
* Function name : DCW_PB_ReadGroupsInfo
* Description : 从 Nv 里读取组信息
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_ReadGroupsInfo(void)
{
uint8 i;
uint8 groupId;
uint16 pos;
MN_RETURN_RESULT_E ret;
MMI_STRING_T strPtr;
T_PB_M_STRING groupInitInfo;
SCI_MEMSET(&groupInitInfo,0x00,sizeof(T_PB_S_STRING));
/* 有 DCW_PB_MIN_GROUP_NUM 个固定分组 */
g_pb.group.amount = DCW_PB_MIN_GROUP_NUM;
for(i = 0; i < DCW_PB_MIN_GROUP_NUM; i++)
{
g_pb.group.index[i] = i;
}
/* 从Nv里读取用户自定义组的信息*/
for (i = 0; i < DCW_PB_USER_GROUP_NUM; i++)
{
groupId = (uint8)(i + DCW_PB_MIN_GROUP_NUM);
pos = (uint16)(MMINV_PHONEBOOK_GROUP_0 + i);
if(MNNV_ReadItem(pos, sizeof(T_PB_M_STRING), &(g_pb.group.groupName[groupId])) == MN_RETURN_SUCCESS)
{
if(g_pb.group.groupName[groupId].len != 0)
{
g_pb.group.index[g_pb.group.amount] = groupId;
g_pb.group.amount++;
}
}
else
{
MNNV_WriteItem(pos,sizeof(T_PB_M_STRING),&groupInitInfo);
g_pb.group.groupName[groupId].len = 0;
}
}
}
/****************************************************************************
* Function name : DCW_PB_ReadNvRecordsInfo
* Description : 此函数用于从nv里读取记录
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_ReadNvRecordsInfo(void)
{
uint32 i;
uint32 j;
uint32 size;
BOOLEAN ret;
/* nv赋值 */
g_pb.nv.valid = TRUE;
g_pb.nv.initialize = FALSE;
g_pb.nv.nameMaxLen = DCW_PB_NAME_MAX_LEN;
g_pb.nv.numberMaxLen = DCW_PB_NUMBER_MAX_LEN;
g_pb.nv.maxRecord = DCW_PB_NV_MAX_RECORDS;
g_pb.nv.usedRecord = 0;
/* 申请nv的记录列表空间 */
size = sizeof(T_PB_NV_RECORD) * g_pb.nv.maxRecord;
g_pb.nv.recordPtr = (T_PB_NV_RECORD *)SCI_ALLOC(size);
SCI_ASSERT(g_pb.nv.recordPtr != PNULL);
SCI_MEMSET(g_pb.nv.recordPtr, 0, size);
/* 申请nv的id编号信息空间 */
size = (g_pb.nv.maxRecord + 7)/8;
g_pb.nv.idManager.idPtr = (uint8 *)SCI_ALLOC(size);
SCI_ASSERT(g_pb.nv.idManager.idPtr != PNULL);
SCI_MEMSET(g_pb.nv.idManager.idPtr, 0, size);
g_pb.nv.idManager.amount = g_pb.nv.maxRecord;
/* 循环读取nv记录 */
for(i = 0; i < g_pb.nv.maxRecord; i++)
{ /* 从nv的第i个记录地址读入信息 */
ret = DCW_PB_ReadOneRecordFromNv(&g_pb_nvRecord, i);
if(ret == TRUE)
{ /* 从nv的第i个记录地址读入信息有效 */
/* 生成拼音编码,用于排序 */
DCW_PB_usc2ToSpell(&g_pb_nvRecord.outerName, &g_pb_nvRecord.innerName);
/* 生成拼音首字母编码,用于快速排序 */
DCW_PB_spellToShortSpell(&g_pb_nvRecord.innerName, &g_pb_nvRecord.shortName);
/* 设置编号使用的信息 */
DCW_PB_insertOneRecordToNvList(&g_pb_nvRecord);
/* 设置id */
DCW_PB_setIdValue(&g_pb.nv.idManager,g_pb_nvRecord.id,1);
}
}
}
/****************************************************************************
* Function name : DCW_PB_createNumberList
* Description : 创建电话号码排序列表
* Param : None
* Return : None
* Author: : *************
* Note : 在此排序过程中,nv记录链表及sim卡记录链表的位置不变,只是链
上记录的总排序号发生变化.
相同的关键字,用相同的排序号.
*****************************************************************************/
void DCW_PB_createNumberList(void)
{
uint16 i = 0;
uint16 nvPos = 0;
uint16 simPos = 0;
uint32 size;
g_pb.numSearchList.count = 0;
g_pb.numSearchList.maxAmount = g_pb.nv.maxRecord * DCW_PB_MAX_NV_PHONE_NUM + g_pb.sim.maxRecord;
/* 申请电话号码列表的空间 */
size = sizeof(T_PB_SEARCH_NUMBER_ITEM) * g_pb.numSearchList.maxAmount;
g_pb.numSearchList.ptr = (T_PB_SEARCH_NUMBER_ITEM *)SCI_ALLOC(size);
SCI_ASSERT(g_pb.numSearchList.ptr != PNULL);
SCI_MEMSET(g_pb.numSearchList.ptr, 0, size);
while(simPos < g_pb.sim.usedRecord && nvPos < g_pb.nv.usedRecord)
{
if(g_pb.sim.recordPtr[simPos].posInAll <= g_pb.nv.recordPtr[nvPos].posInAll)
{
DCW_PB_adjustNumList((void *)&g_pb.sim.recordPtr[simPos],PNULL,PHONEBOOK_SIM_STORAGE,PB_ADD_E);
simPos++;
}
else
{
DCW_PB_adjustNumList((void *)&g_pb.nv.recordPtr[nvPos],PNULL,PHONEBOOK_NV_STORAGE,PB_ADD_E);
nvPos++;
}
}
while(simPos < g_pb.sim.usedRecord)
{
DCW_PB_adjustNumList((void *)&g_pb.sim.recordPtr[simPos],PNULL,PHONEBOOK_SIM_STORAGE,PB_ADD_E);
simPos++;
}
while(nvPos < g_pb.nv.usedRecord)
{
DCW_PB_adjustNumList((void *)&g_pb.nv.recordPtr[nvPos],PNULL,PHONEBOOK_NV_STORAGE,PB_ADD_E);
nvPos++;
}
}
/****************************************************************************
* Function name : DCW_PB_initialFinish
* Description : PB的初始化完成
* Param : None
* Return : None
* Author: : *************
* Note : None
*****************************************************************************/
void DCW_PB_initialFinish(void)
{
g_pb.nv.initialize = TRUE;
g_pb.sim.initialize = TRUE;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -