📄 phonebookmain.c
字号:
#ifdef __MMI_PHB_USIM_FIELD__
if (store_index >= MAX_PB_PHONE_ENTRIES) /* No matter sim or usim */
{
phb_anr[store_index - MAX_PB_PHONE_ENTRIES][0].number[0] = 0xff;
phb_anr[store_index - MAX_PB_PHONE_ENTRIES][1].number[0] = 0xff;
phb_anr[store_index - MAX_PB_PHONE_ENTRIES][2].number[0] = 0xff;
memset(phb_email[store_index - MAX_PB_PHONE_ENTRIES].email_address, 0, 2);
}
#endif /* __MMI_PHB_USIM_FIELD__ */
g_phb_name_index[PhoneBookEntryCount] = store_index;
PhoneBookEntryCount++;
}
/*****************************************************************************
* FUNCTION
* mmi_phb_ind_startup_read
* DESCRIPTION
* This function receives the read indication from L4 Phb at bootup time.
* Stores each indication to the global phonebook list.
* PARAMETERS
* info [IN] Indication from L4 PHB
* RETURNS
* void
*****************************************************************************/
void mmi_phb_ind_startup_read(void *info)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MSG_PHB_STARTUP_READ_IND_STRUCT *LocalPtr;
U16 store_index;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#ifdef __SLT_MMI_PHB_BUG3693__
if (ReadPbflag)
{
#endif
LocalPtr = (MSG_PHB_STARTUP_READ_IND_STRUCT*) info;
PRINT_INFORMATION_2(MMI_TRACE_G4_PHB, "record_index: [%d] storage: [%d] \n",
LocalPtr->phb_entries[0].phb_entry[0].record_index,
LocalPtr->phb_entries[0].phb_entry[0].storage);
/* Send read confirm messaeg back to L4 */
mmi_phb_ind_startup_read_next_req(LocalPtr->access_id);
/* Parse and save data from indication */
if (LocalPtr->phb_entries[0].phb_entry[0].storage == MMI_SIM)
{
#ifdef __SLT_MMI_MULTIGSM_PHONEBOOK_INIT__ //tianjunxia 20070305
if(GetActivedL4C() == MOD_L4C)
{ multigsm_pb_trace("MOD_L4C");
g_phb_cntx.sim_used++;
store_index = LocalPtr->phb_entries[0].phb_entry[0].record_index + MAX_PB_PHONE_ENTRIES - 1; /*Storage Location in array.*/
MMI_ASSERT((g_phb_cntx.sim_used <= MAX_PB_SIM_ENTRIES) && (store_index >= MAX_PB_PHONE_ENTRIES) &&(store_index <(MAX_PB_PHONE_ENTRIES +MAX_PB_SIM_ENTRIES)));
mmi_phb_startup_read_entry(LocalPtr->phb_entries[0].phb_entry[0], store_index);
}
else
{
multigsm_pb_trace("MOD_MULTI_GSM_L4CM");
g_phb_cntx.sim2_used++;
store_index = LocalPtr->phb_entries[0].phb_entry[0].record_index + MAX_PB_PHONE_ENTRIES +MAX_PB_SIM_ENTRIES- 1; /*Storage Location in array.*/
multigsm_pb_trace("mmi_phb_ind_startup_read store_index:%d",store_index);
MMI_ASSERT((g_phb_cntx.sim2_used <= MAX_PB_SIM2_ENTRIES) && (store_index <MAX_PB_ENTRIES) && (store_index >= (MAX_PB_PHONE_ENTRIES +MAX_PB_SIM_ENTRIES) ));
mmi_phb_startup_read_entry(LocalPtr->phb_entries[0].phb_entry[0], store_index);
}
#else
g_phb_cntx.sim_used++;
store_index = LocalPtr->phb_entries[0].phb_entry[0].record_index + MAX_PB_PHONE_ENTRIES - 1; /* Storage Location in array. */
MMI_ASSERT((g_phb_cntx.sim_used <= MAX_PB_SIM_ENTRIES) && (store_index < MAX_PB_ENTRIES));
mmi_phb_startup_read_entry(LocalPtr->phb_entries[0].phb_entry[0], store_index);
#endif
}
else /* NVRAM has multiple-read */
{
int i;
for (i = 0; i < LocalPtr->phb_entries[0].num_of_entry; i++)
{
g_phb_cntx.phone_used++;
store_index = LocalPtr->phb_entries[0].phb_entry[i].record_index - 1; /* Storage Location in array. */
MMI_ASSERT((g_phb_cntx.phone_used <= MAX_PB_PHONE_ENTRIES) && (store_index < MAX_PB_PHONE_ENTRIES));
mmi_phb_startup_read_entry(LocalPtr->phb_entries[0].phb_entry[i], store_index);
}
}
#ifdef __SLT_MMI_PHB_BUG3693__
}
else
{
return;
}
#endif
}
/*****************************************************************************
* FUNCTION
* mmi_phb_ind_startup_read_next_req
* DESCRIPTION
* This function receives the read indication from L4 Phb at bootup time.
* and send confirm to L4 to read next entry.
* PARAMETERS
* access_id [IN]
* info(?) [IN] Indication from L4 PHB
* RETURNS
* void
*****************************************************************************/
void mmi_phb_ind_startup_read_next_req(U8 access_id)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MSG_PHB_STARTUP_READ_NEXT_REQ_STRUCT *myMsgPtr;
MYQUEUE Message;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#ifdef __SLT_MMI_PHB_BUG3693__
if (ReadPbflag)
{
#endif
myMsgPtr =
(MSG_PHB_STARTUP_READ_NEXT_REQ_STRUCT*) OslConstructDataPtr(sizeof(MSG_PHB_STARTUP_READ_NEXT_REQ_STRUCT));
myMsgPtr->access_id = access_id;
Message.oslSrcId = MOD_MMI;
#ifdef __SLT_MMI_MULTIGSM_PHONEBOOK_INIT__ //tianjunxia 20070305
Message.oslDestId = GetActivedL4C();
#else
Message.oslDestId = MOD_L4C;
#endif
Message.oslMsgId = PRT_PHB_STARTUP_READ_NEXT_REQ;
Message.oslDataPtr = (oslParaType*) myMsgPtr;
Message.oslPeerBuffPtr = NULL;
OslMsgSendExtQueue(&Message);
#ifdef __SLT_MMI_PHB_BUG3693__
}
else
{
return;
}
#endif
}
void mmi_phb_startup_finish_final_step(void)
{
#ifdef __MMI_DUAL_SIM_MASTER__
if ((g_phb_cntx.startup_before_sort == TRUE) && (MTPNP_PFAL_ADN_Is_PHB_Before_Sort()))
#endif /* __MMI_DUAL_SIM_MASTER__ */
{
mmi_phb_sort_build_name_index();
// #ifdef __MMI_DUAL_SIM_MASTER__
#if defined (__MMI_DUAL_SIM_MASTER__) ||defined (__SLT_MMI_MULTIGSM_PHONEBOOK_INIT__) //modify by tjx 20080131
if (!mmi_bootup_is_sim_valid() && !mmi_bootup_is_sim2_valid())
#else /* __MMI_DUAL_SIM_MASTER__ */
if (!mmi_bootup_is_sim_valid())
#endif /* __MMI_DUAL_SIM_MASTER__ */
{
g_phb_cntx.phb_ready = TRUE;
mmi_phb_init_build_lookup_table();
}
else
{
PhbGetSpeedDialInfo();
}
}
}
/*****************************************************************************
* FUNCTION
* mmi_phb_ind_startup_finish
* DESCRIPTION
* Reads the Phonebook ready indication from PS and prepare to sort.
* PARAMETERS
* info [IN] Finish indication
* RETURNS
* void
*****************************************************************************/
void mmi_phb_ind_startup_finish(void *info)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MSG_PHB_STARTUP_FINISH_IND_STRUCT *localPtr;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2(MMI_TRACE_G4_PHB, "File: [%s] Line: [%d] <<mmi_phb_ind_startup_finish.>\n", __FILE__,
__LINE__);
#ifdef __SLT_MMI_PHB_BUG3693__
if (ReadPbflag)
{
#endif
localPtr = (MSG_PHB_STARTUP_FINISH_IND_STRUCT*) info;
multigsm_pb_trace( " in mmi_phb_ind_startup_finish 11111111111");
//multigsm_pb_trace(" in mmi_phb_ind_startup_finish gInsertSimAppFlag2:%d",gInsertSimAppFlag2);
#ifdef __MMI_PHB_USIM_FIELD__
g_phb_cntx.usim_ready_stage = MMI_PHB_USIM_READY;
if (!g_phb_cntx.is_usim)
#endif /* __MMI_PHB_USIM_FIELD__ */
{
#ifdef __SLT_MMI_MULTIGSM_PHONEBOOK_INIT__ //tianjunxia temp
if ( GetActivedL4C() == MOD_L4C) //sim1 read finish
{
g_phb_cntx.sim_name_len = localPtr->phb_len;
g_phb_cntx.fdn_name_len = localPtr->fdn_len;
g_phb_cntx.bdn_name_len = localPtr->bdn_len;
g_phb_cntx.owner_name_len = localPtr->owner_len;
g_phb_cntx.sim_total = localPtr->sim_max_num;
g_phb_cntx.phone_total = localPtr->phb_max_num;
multigsm_pb_trace("tttttttttt======in==mmi_phb_ind_startup_finish sim_name_len:%d",g_phb_cntx.sim_name_len);
multigsm_pb_trace("tttttttttt======in==mmi_phb_ind_startup_finish sim_total:%d",g_phb_cntx.sim_total);
multigsm_pb_trace("tttttttttt======in==mmi_phb_ind_startup_finish phone_total:%d",g_phb_cntx.phone_total);
multigsm_pb_trace("tttttttttt======in==mmi_phb_ind_startup_finish owner_name_len:%d",g_phb_cntx.owner_name_len);
g_phb_cntx.phb_subready[0]=TRUE;//TEMP enum
if(!g_phb_cntx.nvram_data_init)
{
mmi_phb_init_get_data_from_nvram();
g_phb_cntx.nvram_data_init = TRUE;
multigsm_pb_trace("tttttttttt======in====mmi_phb_init_get_data_from_nvram() == MOD_L4C======mmi_phb_ind_startup_finish");
}
}
else //signal from sub , read sim2 finish, do not read phone_total from sub
{
g_phb_cntx.sim2_name_len = localPtr->phb_len;
g_phb_cntx.fdn_name_len_sim2= localPtr->fdn_len;
g_phb_cntx.bdn_name_len_sim2= localPtr->bdn_len;
g_phb_cntx.owner_name_len_sim2= localPtr->owner_len;
g_phb_cntx.sim2_total = localPtr->sim_max_num;
g_phb_cntx.phb_subready[1]=TRUE;//TEMP enum
multigsm_pb_trace("tttttttttt======in==mmi_phb_ind_startup_finish sim2_name_len:%d",g_phb_cntx.sim2_name_len);
multigsm_pb_trace("tttttttttt======in==mmi_phb_ind_startup_finish sim2_total:%d",g_phb_cntx.sim2_total);
multigsm_pb_trace("tttttttttt======in==mmi_phb_ind_startup_finish owner_name_len_sim2:%d",g_phb_cntx.owner_name_len_sim2);
}
//may modify the below
if(g_phb_cntx.phb_subready[0] == FALSE || g_phb_cntx.phb_subready[1] == FALSE) //one sim not ready
{
multigsm_pb_trace("tttttttttt======in=======mmi_phb_ind_startup_finish one sim not read finish=======");
return;
}
multigsm_pb_trace("tttttttttt======in==mmi_phb_ind_startup_finish sim2_total:%d",g_phb_cntx.sim2_total);
multigsm_pb_trace("tttttttttt======in==mmi_phb_ind_startup_finish sim_total:%d",g_phb_cntx.sim_total);
//two finish indications have already received
if (g_phb_cntx.sim_total > MAX_PB_SIM_ENTRIES)
g_phb_cntx.sim_total = MAX_PB_SIM_ENTRIES;
if (g_phb_cntx.sim2_total > MAX_PB_SIM2_ENTRIES)
g_phb_cntx.sim2_total = MAX_PB_SIM2_ENTRIES;
if (g_phb_cntx.phone_total > MAX_PB_PHONE_ENTRIES)
g_phb_cntx.phone_total = MAX_PB_PHONE_ENTRIES;
#else
g_phb_cntx.sim_name_len = localPtr->phb_len;
g_phb_cntx.fdn_name_len = localPtr->fdn_len;
g_phb_cntx.bdn_name_len = localPtr->bdn_len;
g_phb_cntx.owner_name_len = localPtr->owner_len;
g_phb_cntx.sim_total = localPtr->sim_max_num;
g_phb_cntx.phone_total = localPtr->phb_max_num;
if (g_phb_cntx.sim_total > MAX_PB_SIM_ENTRIES)
{
g_phb_cntx.sim_total = MAX_PB_SIM_ENTRIES;
}
if (g_phb_cntx.phone_total > MAX_PB_PHONE_ENTRIES)
{
g_phb_cntx.phone_total = MAX_PB_PHONE_ENTRIES; /* This two values should be the same */
}
if (!g_phb_cntx.nvram_data_init)
{
mmi_phb_init_get_data_from_nvram();
g_phb_cntx.nvram_data_init = TRUE;
}
#endif
if (gSecuritySetupContext.FdlStatus)
{
mmi_phb_fdn_get_list_to_ram();
}
else
{
#ifdef __MMI_DUAL_SIM_MASTER__
g_phb_cntx.startup_before_sort = TRUE;
#endif /* __MMI_DUAL_SIM_MASTER__ */
mmi_phb_startup_finish_final_step();
}
// #if defined(__MMI_PHB_BOOT_UP_RECURSIVE_SORTING__)
// if (PhoneBookEntryCount > 1)
// {
// mmi_phb_sort_build_name_index_with_timer();
// }
// else
// {
// mmi_phb_ind_startup_finish_after_name_sort();
// }
// #else /* defined(__MMI_PHB_BOOT_UP_RECURSIVE_SORTING__) */
/* Sort name list */
// mmi_phb_sort_build_name_index();
/*
* Use SIM storage buffer to store FDN list when FDN is enable.
* Because when FDN is enable, the ADN entry cannot be retrieved from SIM card.
* This list is for incoming call lookup name usage.
*
* Note: Be sure to retrieve speed dial number after retrieve FDN list.
*/
// if (gSecuritySetupContext.FdlStatus)
// {
// mmi_phb_fdn_get_list_to_ram();
// }
/*
* Get Speed Dial Info. If FDN on, get speed dial info after FDN list retrieved.
* Because they all use same message.
*/
// else
// {
// if (!mmi_bootup_is_sim_valid())
// {
// g_phb_cntx.phb_ready = TRUE;
// mmi_phb_init_build_lookup_table();
// }
// else
// {
// PhbGetSpeedDialInfo();
// }
// }
// #endif /* defined(__MMI_PHB_BOOT_UP_RECURSIVE_SORTING__) */
//#endif
}
#ifdef __SLT_MMI_PHB_BUG3693__
}
else
{
return;
}
#endif
}
#if defined(__MMI_PHB_BOOT_UP_RECURSIVE_SORTING__)
/*****************************************************************************
* FUNCTION
* mmi_phb_ind_startup_finish_after_name_sort
* DESCRIPTION
* Complete phb initial after phb sorting
* PARAMETERS
* info [IN] Finish indication
* RETURNS
* void
*****************************************************************************/
void mmi_phb_ind_startup_finish_after_name_sort(void)
{
if (gSecuritySetupContext.FdlStatus)
{
mmi_phb_fdn_get_list_to_ram();
}
/*
* Get Speed Dial Info. If FDN on, get speed dial info after FDN list retrieved.
* Because they all use same message.
*/
else
{
if (!mmi_bootup_is_sim_valid())
{
g_phb_cntx.phb_ready = TRUE;
mmi_phb_init_build_lookup_table();
}
else
{
PhbGetSpeedDialInfo();
}
}
}
#endif /* defined(__MMI_PHB_BOOT_UP_RECURSIVE_SORTING__) */
/*****************************************************************************
* FUNCTION
* mmi_phb_init_get_data_from_nvram
* DESCRIPTION
* Retrieves the phonebook data like, Caller Group details, view fields,
* preferred storage, etc from NVRAM
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_phb_init_get_data_from_nvram(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
U8 i;
S16 pError;
U16 tempStorageLocation; /* Temp Solution For Read/Write 2 bytes NVRAM_PHB_STORAGE_LOCATION */
U16 tempNameListFilter;
PHB_CALLER_GROUP_STRUCT *callerGroups;
U8 viewField[NVRAM_PHB_SETTINGS_SIZE];
#if defined(__MMI_VCARD_V30__)
U16 tempVcardVersion;
#endif /* defined(__MMI_VCARD_V30__) */
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
callerGroups = (PHB_CALLER_GROUP_STRUCT*) g_phb_cntx.caller_group;
ReadRecord(NVRAM_EF_PHB_SETTINGS_LID, 1, viewField, NVRAM_PHB_SETTINGS_SIZE, &pError);
memcpy(g_phb_cntx.view_field, viewField, MAX_PB_VIEW_FIELDS);
ReadValue(NVRAM_PHB_STORAGE_LOCATION, &tempStorageLocation, DS_SHORT, &pError); /* 2 bytes for DS_SHORT */
g_phb_cntx.prefer_storage = (U8) tempStorageLocation;
ReadValue(NVRAM_PHB_NAME_LIST_FILTER, &tempNameListFilter, DS_SHORT, &pError); /* 2 bytes for DS_SHORT */
g_phb_cntx.name_list_filter = (U8) tempNameListFilter;
#if defined(__MMI_VCARD_V30__)
ReadValue(NVRAM_PHB_VCARD_VERSION, &tempVcardVersion, DS_SHORT, &pError); /* 2 bytes for D
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -