⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phonebookmain.c

📁 mtk 6225平台下电话本的主要实现
💻 C
📖 第 1 页 / 共 5 页
字号:

#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 + -