// ============================================================================= // bal_fsTraceProcess // ----------------------------------------------------------------------------- /// Read a bunch of data from the debug remote buffer and output to tFlash card. // ============================================================================= PUBLIC VOID bal_fsTraceProcess(VOID) { INT32 trace_len, result = 0; // hal_HstSendEvent(199); if(g_trace_Data == NULL){ return; } do { trace_len = fstraces_Read(g_trace_Data, MAX_TRACE_LEN); if ((trace_len > 0) && (g_tracefileHandle >= 0)) { result = FS_Write(g_tracefileHandle, g_trace_Data, trace_len); if(result == ERR_FS_DISK_FULL) { FS_Truncate(g_tracefileHandle,0); } else if(result<0) { bal_fstraceStop(); } } } while (trace_len > 0); COS_SetTimerEX(BAL_TH(BAL_DEV_MONITOR_TASK_PRIORITY) ,PRV_CFW_TRACE_TO_FLASH_TIMER_ID, COS_TIMER_MODE_SINGLE,FS_TRACE_TIMER_CNT); }
// ============================================================================= // bal_fstraceStart // ----------------------------------------------------------------------------- /// start tFlash trace recorsing // ============================================================================= PUBLIC VOID bal_fstraceStart(VOID) { UINT8 targetTraceName[20] = "/t/fstrace.bin"; if(g_trace_Data != NULL){ CSW_TRACE(BASE_BAL_TS_ID, TSTXT("bal_fstraceStart:fs trace already opened!")); return; } if((g_tracefileHandle = _fsTraceFileOpen(targetTraceName, FS_O_RDWR | FS_O_CREAT | FS_O_TRUNC, 0)) < 0){ CSW_TRACE(BASE_BAL_TS_ID, TSTXT("bal_fstraceStart:file %s open fail, ret %x"),targetTraceName, g_tracefileHandle); return; } if((g_trace_Data = CSW_Malloc(MAX_TRACE_LEN)) == NULL){ CSW_TRACE(BASE_BAL_TS_ID, TSTXT("bal_fstraceStart:malloc fail!")); _fsTraceFileClose(g_tracefileHandle); return; } _fsTraceSetLevel(); fstraces_Open(); COS_SetTimerEX(BAL_TH(BAL_DEV_MONITOR_TASK_PRIORITY) ,PRV_CFW_TRACE_TO_FLASH_TIMER_ID, COS_TIMER_MODE_SINGLE,FS_TRACE_TIMER_CNT); }
/************************************************************** FUNCTION NAME : ADP_DispatchPhbReqMsg PURPOSE : Message Adaption for Phonebook REQ. INPUT PARAMETERS : COS_EVENT *pCosEvent OUTPUT PARAMETERS : nil RETURNS : void REMARKS : **************************************************************/ static BOOL ADP_DispatchPhbReqMsg(COS_EVENT *pCosEvent) { UINT32 ValueSimGetPbkEntry = ERR_SUCCESS; UINT16 error = 0; ASSERT(pCosEvent != NULL); TBM_ENTRY(0x29e3); #ifdef __ADP_MULTI_SIM__ adp_ConfigureContext(ADP_MODULE_PHB, adp_GetMMISimID(ADP_GET_MMI_DEST_MOD(pCosEvent->nParam3))); #endif switch (pCosEvent->nEventId) { /* init item by item */ case MSG_ID_MMI_PHB_STARTUP_READ_NEXT_REQ: { CFW_PBK_ENTRY_INFO *entryInfo = NULL; U16 nSimTotalSlot = 0; U8 i; ilm_struct *oslMessage = (ilm_struct *) pCosEvent->nParam1; mmi_phb_startup_read_next_req_struct *local_para_ptr = (mmi_phb_startup_read_next_req_struct *)oslMessage->local_para_ptr; #ifdef __ADP_MULTI_SIM__ mmi_trace(g_sw_ADP_PHB,"PHB Init read req , simid = %d, access_id = %d, simindex = %d", adp_pPHBContext->nSimId, local_para_ptr->access_id, adp_pPHBContext->nSimIndex); for(i = 0; i < ADP_SIM_NUMBER; i++) { mmi_trace(g_sw_ADP_PHB, "PHB g_PHBSIMStartFinish[%d] is %d,adp_gPHBContex->nSimId is %d,adp_gPHBContex[%d].nSIMTotalSlot is %d", i, g_PHBSIMStartFinish[i],adp_pPHBContext->nSimId, i, adp_gPHBContex[i].nSIMTotalSlot); if(i != adp_pPHBContext->nSimId && g_PHBSIMStartFinish[i]) { mmi_trace(g_sw_ADP_PHB, "PHB nSimTotalSlot before = %d", nSimTotalSlot); mmi_trace(g_sw_ADP_PHB, "PHB adp_pPHBContext[i].nSIMTotalSlot = %d", adp_gPHBContex[i].nSIMTotalSlot); nSimTotalSlot += adp_gPHBContex[i].nSIMTotalSlot; mmi_trace(g_sw_ADP_PHB, "PHB nSimTotalSlot after = %d", nSimTotalSlot); } } nSimTotalSlot += adp_pPHBContext->nSIMTotalSlot; mmi_trace(g_sw_ADP_PHB, "PHB nSimTotalSlot = %d",nSimTotalSlot); if(local_para_ptr->access_id == nSimTotalSlot) { ADP_PhbInitFinishOneCardStartAnother(adp_pPHBContext->nSimId); return TRUE; } #endif #ifdef __ADP_MULTI_SIM__ if (local_para_ptr->access_id < nSimTotalSlot) #else if (local_para_ptr->access_id < adp_pPHBContext->nSIMusedSlot) #endif { //nCurAccess = local_para_ptr->access_id + 1; #ifdef __ADP_MULTI_SIM__ #ifdef ADP_CFW_DUALSIM_SIMULATOR_SUPPORT ValueSimGetPbkEntry = UT_CFW_SimGetPbkEntry(SimStorageID, adp_pPHBContext->nSimIndex, FREE_UTI, adp_pPHBContext->nSimId); #else U8 nUTI = FREE_UTI; #ifdef ADP_SIMU_FOUR_CARDS_WITH_TWO_CARDS Simu_Rsp_Marker_Struct simuRspMarker; simuRspMarker.msgID = EV_CFW_SIM_GET_PBK_ENTRY_RSP; simuRspMarker.nSimID = adp_pPHBContext->nSimId; simuRspMarker.Uti = nUTI; simuRspMarker.pNext = NULL; adp_simu_add_Rsp_Marker(&simuRspMarker); #endif ValueSimGetPbkEntry = CFW_SimGetPbkEntry(SimStorageID, adp_pPHBContext->nSimIndex, nUTI, gPHBCurrentSimID); #endif #else ValueSimGetPbkEntry = CFW_SimGetPbkEntry(SimStorageID, adp_pPHBContext->nSimIndex, FREE_UTI); #endif mmi_trace(g_sw_ADP_PHB,"PHB Init Func: %s ValueSimGetPbkEntry=0x%x", __FUNCTION__, ValueSimGetPbkEntry); if(ValueSimGetPbkEntry != ERR_SUCCESS) { #ifdef __ADP_MULTI_SIM__ ADP_PhbInitFinishOneCardStartAnother(adp_pPHBContext->nSimId); #endif switch (ValueSimGetPbkEntry) { case ERR_SUCCESS: mmi_trace(g_sw_ADP_PHB, TSTXT("the function succeeds !\n")); break; case ERR_CFW_INVALID_PARAMETER: mmi_trace(g_sw_ADP_PHB, TSTXT("The input parameter(nIndex) is invalid !\n")); break; case ERR_CFW_NOT_EXIST_FREE_UTI: mmi_trace(g_sw_ADP_PHB, TSTXT("No any available free UTI in the system !\n")); break; case ERR_CFW_UTI_IS_BUSY: mmi_trace(g_sw_ADP_PHB, TSTXT("The UTI is busy, maybe the UTI is used by other instance !\n")); break; case ERR_CME_MEMORY_FULL: mmi_trace(g_sw_ADP_PHB, TSTXT("No any more memory to allocate !\n")); break; default: break; } } } #ifdef __ADP_MULTI_SIM__ else if(local_para_ptr->access_id < nSimTotalSlot + nMEusedSlot) #else else if (local_para_ptr->access_id < adp_pPHBContext->nSIMusedSlot + nMEusedSlot) #endif { ilm_struct ilm_ptr; mmi_phb_startup_read_ind_struct *phb = OslMalloc(sizeof(mmi_phb_startup_read_ind_struct)); ASSERT(phb != NULL); memset(phb, 0x00, sizeof(mmi_phb_startup_read_ind_struct)); #ifdef __ADP_MULTI_SIM__ entryInfo = &(pb_coolsand[MEUsedIndex[local_para_ptr->access_id - nSimTotalSlot]]); #else entryInfo = &(pb_coolsand[MEUsedIndex[local_para_ptr->access_id - adp_pPHBContext->nSIMusedSlot]]); #endif /* init next assess_id */ phb->access_id = local_para_ptr->access_id + 1; phb->phb_entry.storage = MMI_NVRAM; /* physical index */ phb->phb_entry.record_index = entryInfo->nAppIndex; memcpy(&(phb->phb_entry.alpha_id), &(entryInfo->alpha_id), sizeof(l4_name_struct)); memcpy(&(phb->phb_entry.tel), &(entryInfo->tel), sizeof(l4_addr_bcd_struct)); //vivian add for bug 10769 phb->phb_entry.tel.addr_length = entryInfo->tel.addr_length + 1; ilm_ptr.dest_mod_id = MOD_MMI; ilm_ptr.src_mod_id = MOD_L4C; ilm_ptr.msg_id = MSG_ID_MMI_PHB_STARTUP_READ_IND; ilm_ptr.local_para_ptr = (local_para_struct *)phb; OslMsgSendExtQueue(&ilm_ptr); mmi_trace(g_sw_ADP_PHB, TSTXT("PHB Init startup_read_next_req, new access_id:%d, record_index:%d\n"), phb->access_id, phb->phb_entry.record_index); } else { #ifdef __ADP_MULTI_SIM__ BOOL bAllInitDone = TRUE; for(i = 0; i < ADP_SIM_NUMBER; i++) { if(!gSIMIsNotExist[i] && !g_PHBSIMStartFinish[i]) { bAllInitDone = FALSE; } } if(bAllInitDone) #endif { Msg_Adaption_PHB_Finish_Init(); } } } break; case MSG_ID_MMI_PHB_DEL_ENTRY_REQ: { UINT32 ValueSimDelPbkEntry; ilm_struct *oslMessage = (ilm_struct *) pCosEvent->nParam1; mmi_phb_del_entry_req_struct *local_para_ptr = (mmi_phb_del_entry_req_struct *)oslMessage->local_para_ptr; mmi_trace(g_sw_ADP_PHB, "PHB Delete MSG_ID_MMI_PHB_DEL_ENTRY_REQ"); if (local_para_ptr->storage == MMI_NVRAM) { if (local_para_ptr->type == MMI_PHB_PHONEBOOK) { /* check if me used index exist */ ASSERT(nMEusedSlot > 0); ASSERT(local_para_ptr->index <= MAX_PB_PHONE_ENTRIES); /* set nAppIndex as 0 value when delete item */ pb_coolsand[local_para_ptr->index].nAppIndex = 0; memset(&pb_coolsand[local_para_ptr->index], 0, sizeof(CFW_PBK_ENTRY_INFO)); //2007-06-20, Han ShiLin, add handler for offset when write record //if (WriteRecord(NVRAM_PHB_NVRAM_LID, 1, (void *)&(pb_coolsand[local_para_ptr->index]), sizeof(CFW_PBK_ENTRY_INFO), &error) == sizeof(CFW_PBK_ENTRY_INFO)) if (WriteRecord(NVRAM_PHB_NVRAM_LID, 1, (void *)&(pb_coolsand[local_para_ptr->index]), (local_para_ptr->index - 1) * sizeof(CFW_PBK_ENTRY_INFO), &error) == sizeof(CFW_PBK_ENTRY_INFO)) { /* decrease one from total count */ nMEusedSlot--; adp_phb_del_entry_ok_rsp(); } else adp_phb_del_entry_error_rsp(); } } else { SetSimStorageID(local_para_ptr->type); #ifdef __ADP_MULTI_SIM__ #ifdef ADP_CFW_DUALSIM_SIMULATOR_SUPPORT if (local_para_ptr->type == MMI_PHB_PHONEBOOK) ValueSimDelPbkEntry = UT_CFW_SimDeletePbkEntry(CFW_PBK_SIM, local_para_ptr->index, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_MSISDN) ValueSimDelPbkEntry = UT_CFW_SimDeletePbkEntry(CFW_PBK_ON, local_para_ptr->index, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_FDN) ValueSimDelPbkEntry = UT_CFW_SimDeletePbkEntry(CFW_PBK_SIM_FIX_DIALLING, local_para_ptr->index, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_BDN) ValueSimDelPbkEntry = UT_CFW_SimDeletePbkEntry(CFW_PBK_SIM_FIX_DIALLING, local_para_ptr->index, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_SDN) ValueSimDelPbkEntry = UT_CFW_SimDeletePbkEntry(CFW_PBK_SIM_FIX_DIALLING, local_para_ptr->index, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_ECC) ValueSimDelPbkEntry = UT_CFW_SimDeletePbkEntry(CFW_PBK_SIM_FIX_DIALLING, local_para_ptr->index, FREE_UTI, adp_pPHBContext->nSimId); else ValueSimDelPbkEntry = ERR_CME_UNKNOWN; #else//ADP_CFW_DUALSIM_SIMULATOR_SUPPORT if (local_para_ptr->type == MMI_PHB_PHONEBOOK) ValueSimDelPbkEntry = CFW_SimDeletePbkEntry(CFW_PBK_SIM, local_para_ptr->index, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_MSISDN) ValueSimDelPbkEntry = CFW_SimDeletePbkEntry(CFW_PBK_ON, local_para_ptr->index, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_FDN) ValueSimDelPbkEntry = CFW_SimDeletePbkEntry(CFW_PBK_SIM_FIX_DIALLING, local_para_ptr->index, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_BDN) ValueSimDelPbkEntry = CFW_SimDeletePbkEntry(CFW_PBK_SIM_FIX_DIALLING, local_para_ptr->index, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_SDN) ValueSimDelPbkEntry = CFW_SimDeletePbkEntry(CFW_PBK_SIM_FIX_DIALLING, local_para_ptr->index, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_ECC) ValueSimDelPbkEntry = CFW_SimDeletePbkEntry(CFW_PBK_SIM_FIX_DIALLING, local_para_ptr->index, FREE_UTI, adp_pPHBContext->nSimId); else ValueSimDelPbkEntry = ERR_CME_UNKNOWN; #endif//ADP_CFW_DUALSIM_SIMULATOR_SUPPORT #else//__ADP_MULTI_SIM__ if (local_para_ptr->type == MMI_PHB_PHONEBOOK) ValueSimDelPbkEntry = CFW_SimDeletePbkEntry(CFW_PBK_SIM, local_para_ptr->index, FREE_UTI); else if (local_para_ptr->type == MMI_PHB_MSISDN) ValueSimDelPbkEntry = CFW_SimDeletePbkEntry(CFW_PBK_ON, local_para_ptr->index, FREE_UTI); else if (local_para_ptr->type == MMI_PHB_FDN) ValueSimDelPbkEntry = CFW_SimDeletePbkEntry(CFW_PBK_SIM_FIX_DIALLING, local_para_ptr->index, FREE_UTI); else if (local_para_ptr->type == MMI_PHB_BDN) ValueSimDelPbkEntry = CFW_SimDeletePbkEntry(CFW_PBK_SIM_FIX_DIALLING, local_para_ptr->index, FREE_UTI); else if (local_para_ptr->type == MMI_PHB_SDN) ValueSimDelPbkEntry = CFW_SimDeletePbkEntry(CFW_PBK_SIM_FIX_DIALLING, local_para_ptr->index, FREE_UTI); else if (local_para_ptr->type == MMI_PHB_ECC) ValueSimDelPbkEntry = CFW_SimDeletePbkEntry(CFW_PBK_SIM_FIX_DIALLING, local_para_ptr->index, FREE_UTI); else ValueSimDelPbkEntry = ERR_CME_UNKNOWN; #endif//__ADP_MULTI_SIM__ mmi_trace(g_sw_ADP_PHB,"PHB del req CFW_SimDeletePbkEntry = %d",ValueSimGetPbkEntry); //add by chenq for bug 5889 and 5800, 20070803 B switch (ValueSimDelPbkEntry) { case ERR_SUCCESS: COS_KillTimerEX(GetMmiTaskHandle(MOD_ADP),PHBLIST_COPY_OR_DELETE_TIMEROUTID ); COS_SetTimerEX(GetMmiTaskHandle(MOD_ADP), PHBLIST_COPY_OR_DELETE_TIMEROUTID, 0, (PHB_TIMEROUT_HANDWRITING_CONFIRM)MILLI_SECOND); PHBListCopyOrDeleteTimerOutErrorFUN = adp_phb_del_entry_error_rsp; if (local_para_ptr->type == MMI_PHB_PHONEBOOK) { MMI_PHB_PHONEBOOK_TYPE = TRUE; } mmi_trace(g_sw_ADP_PHB, "local_para_ptr->index = %d",local_para_ptr->index); mmi_trace(g_sw_ADP_PHB, "the function succeeds !\n"); break; case ERR_CFW_INVALID_PARAMETER: mmi_trace(g_sw_ADP_PHB, "The input parameter(nIndex) is invalid !\n"); break; case ERR_CFW_NOT_EXIST_FREE_UTI: mmi_trace(g_sw_ADP_PHB, "No any available free UTI in the system !\n"); break; case ERR_CFW_UTI_IS_BUSY: mmi_trace(g_sw_ADP_PHB, "The UTI is busy, maybe the UTI is used by other instance !\n"); break; case ERR_CME_MEMORY_FULL: mmi_trace(g_sw_ADP_PHB, "No any more memory to allocate !\n"); break; default: break; } //add by chenq for bug 5889 and 5800, 20070803 E /* send msg to MMI: result = error */ if (ValueSimDelPbkEntry != ERR_SUCCESS) adp_phb_del_entry_error_rsp(); } } break; case MSG_ID_MMI_PHB_SET_ENTRY_REQ: { UINT32 ValueSimAddPbkEntry = 0; U8 length = 0; S32 ret = 0; ilm_struct *oslMessage = (ilm_struct *) pCosEvent->nParam1; mmi_phb_set_entry_req_struct *local_para_ptr = (mmi_phb_set_entry_req_struct *)oslMessage->local_para_ptr; mmi_trace(g_sw_ADP_PHB, "PHB SET ENTRY REQ storage = %d\n", local_para_ptr->list.storage); if (local_para_ptr->list.storage == MMI_NVRAM) { if (local_para_ptr->type == MMI_PHB_PHONEBOOK) { /* the flag of for circle sentence */ INT32 index = 1; /* add new item */ if (local_para_ptr->list.record_index == 0xFFFF) { if(nMEusedSlot >= MAX_PB_PHONE_ENTRIES) { adp_phb_set_entry_capacity_exceeded_rsp(); TBM_EXIT(0x29e3); return TRUE; } for (index = 1; index <= MAX_PB_PHONE_ENTRIES; index++) { /* search the unused phisical index */ if (pb_coolsand[index].nAppIndex == 0) break; } nMEusedSlot++; } else { ASSERT(local_para_ptr->list.record_index <= MAX_PB_PHONE_ENTRIES); index = local_para_ptr->list.record_index; } pb_coolsand[index].nAppIndex = index; mmi_trace(g_sw_ADP_PHB, "PHB FUNC:%s MSG_ID_MMI_PHB_SET_ENTRY_REQ, nAppIndex = %d", __FUNCTION__, index); memcpy(&(pb_coolsand[index].alpha_id), &(local_para_ptr->list.alpha_id), sizeof(l4_name_struct)); /* check if international number and so on */ pb_coolsand[index].tel.addr_bcd[0] = local_para_ptr->list.tel.type; /* save as bcd format */ { extern U8 mmi_phb_convert_to_bcd (U8 *dest, U8 *source, U8 max_dest_len ); length = mmi_phb_convert_to_bcd(&(pb_coolsand[index].tel.addr_bcd[1]), local_para_ptr->list.tel.number, (MAX_PB_NUMBER_LENGTH + 1) / 2); } pb_coolsand[index].tel.addr_length = length; //hFile = pfopen("c:/phonebook.dat", FS_O_CREAT|FS_O_RDWR, 0); //if (hFile != NULL) // { /* orient to be write index */ ret = WriteRecord(NVRAM_PHB_NVRAM_LID, 1, (void *)&(pb_coolsand[index]), (index-1)*sizeof(CFW_PBK_ENTRY_INFO), &error); mmi_trace(g_sw_ADP_PHB, "ADP_PHB: FUNC:%s,MMI_PHB_SET_ENTRY_REQ WriteRecord ret = %x", __FUNCTION__, ret); if (ret == sizeof(CFW_PBK_ENTRY_INFO)) { ilm_struct ilm_ptr; mmi_phb_set_entry_rsp_struct *phb = OslMalloc(sizeof(mmi_phb_set_entry_rsp_struct)); ASSERT(phb != NULL); memset(phb, 0x00, sizeof(mmi_phb_set_entry_rsp_struct)); phb->result.flag = L4C_OK; phb->no_list = 1; phb->list[0].storage = MMI_NVRAM; phb->list[0].record_index = index; memcpy(&(phb->list[0].tel), &(local_para_ptr->list.tel), sizeof(l4c_number_struct)); memcpy(&(phb->list[0].alpha_id), &(local_para_ptr->list.alpha_id), sizeof(l4_name_struct)); ilm_ptr.dest_mod_id = MOD_MMI; ilm_ptr.src_mod_id = MOD_L4C; ilm_ptr.msg_id = PRT_PHB_SET_ENTRY_RSP; ilm_ptr.local_para_ptr = (local_para_struct *)phb; OslMsgSendExtQueue(&ilm_ptr); } else if(ret == ERR_FS_DISK_FULL) { adp_phb_set_entry_capacity_exceeded_rsp(); } else { adp_phb_set_entry_error_rsp(); } // pfclose(hFile); } // else // { /* send response to MMI: set entry error*/ // adp_phb_set_entry_error_rsp(); // } // mmi_trace(g_sw_ADP_PHB, TSTXT("mmi_phb_set_entry_rsp***index:%d******************************\n"), index); } else { INT32 index = 1; //2007-07-11, Li Tao UINT8 number_bcd[32] = {0}; UINT8 name_ucs2[(MAX_PB_NAME_LENGTH + 1) * ENCODING_LENGTH] = {0}; CFW_SIM_PBK_ENTRY_INFO local_para_ptr2; memset(&local_para_ptr2, 0, sizeof(CFW_SIM_PBK_ENTRY_INFO)); if (local_para_ptr->list.alpha_id.name_dcs == MMI_PHB_ASCII) { memcpy(name_ucs2, local_para_ptr->list.alpha_id.name, local_para_ptr->list.alpha_id.name_length); name_ucs2[local_para_ptr->list.alpha_id.name_length] = '\0'; local_para_ptr2.iFullNameSize = local_para_ptr->list.alpha_id.name_length; } else { name_ucs2[0] = 0x80; memcpy(name_ucs2 + 1, local_para_ptr->list.alpha_id.name, local_para_ptr->list.alpha_id.name_length); local_para_ptr2.iFullNameSize = local_para_ptr->list.alpha_id.name_length + 1; name_ucs2[local_para_ptr2.iFullNameSize] = '\0'; name_ucs2[local_para_ptr2.iFullNameSize + 1] = '\0'; } local_para_ptr2.pFullName = name_ucs2; local_para_ptr2.nNumberSize = SUL_AsciiToGsmBcd(local_para_ptr->list.tel.number, local_para_ptr->list.tel.length, number_bcd); local_para_ptr2.pNumber = number_bcd; if (local_para_ptr->list.tel.type == MMI_CSMCC_INTERNATIONAL_ADDR) local_para_ptr2.nType = CFW_TELNUMBER_TYPE_INTERNATIONAL; else local_para_ptr2.nType = CFW_TELNUMBER_TYPE_NATIONAL; // modify by chenq for PBK, 20070807 B SetSimStorageID(local_para_ptr->type); if (local_para_ptr->list.record_index == 0xFFFF) { //2007-07-11, Li Tao,查找映射表,物理地址从1开始 //local_para_ptr2->phoneIndex = 0; if (local_para_ptr->type == MMI_PHB_PHONEBOOK) { for (index = 1; index <= adp_pPHBContext->nSIMTotalSlot; index++) { /* search the unused phisical index in SIM*/ if (adp_pPHBContext->PB_SIM_RECORDID[index] == 0) { local_para_ptr2.phoneIndex = index; break; } } } } else { local_para_ptr2.phoneIndex = LOUINT8(local_para_ptr->list.record_index); } // modify by chenq for PBK, 20070807 E #ifdef __ADP_MULTI_SIM__ mmi_trace(g_sw_ADP_PHB, "PHB SET ENTRY REQ nParamsimid = %d, phoneIndex = %d reqtype = %d",ADP_GET_MMI_DEST_MOD(pCosEvent->nParam3), local_para_ptr2.phoneIndex, local_para_ptr->type); #ifdef ADP_CFW_DUALSIM_SIMULATOR_SUPPORT if (local_para_ptr->type == MMI_PHB_PHONEBOOK) ValueSimAddPbkEntry = UT_CFW_SimAddPbkEntry(CFW_PBK_SIM, &local_para_ptr2, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_FDN) ValueSimAddPbkEntry = UT_CFW_SimAddPbkEntry(CFW_PBK_SIM_FIX_DIALLING, &local_para_ptr2, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_MSISDN) ValueSimAddPbkEntry = UT_CFW_SimAddPbkEntry(CFW_PBK_ON, &local_para_ptr2, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_BDN) ValueSimAddPbkEntry = UT_CFW_SimAddPbkEntry(CFW_PBK_SIM_BARRED_DIALLING, &local_para_ptr2, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_SDN) ValueSimAddPbkEntry = UT_CFW_SimAddPbkEntry(CFW_PBK_SIM_SERVICE_DIALLING, &local_para_ptr2, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_ECC) ValueSimAddPbkEntry = UT_CFW_SimAddPbkEntry(CFW_PBK_EN, &local_para_ptr2, FREE_UTI, adp_pPHBContext->nSimId); else ValueSimAddPbkEntry = ERR_CME_UNKNOWN; #else//ADP_CFW_DUALSIM_SIMULATOR_SUPPORT if (local_para_ptr->type == MMI_PHB_PHONEBOOK) ValueSimAddPbkEntry = CFW_SimAddPbkEntry(CFW_PBK_SIM, &local_para_ptr2, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_FDN) ValueSimAddPbkEntry = CFW_SimAddPbkEntry(CFW_PBK_SIM_FIX_DIALLING, &local_para_ptr2, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_MSISDN) ValueSimAddPbkEntry = CFW_SimAddPbkEntry(CFW_PBK_ON, &local_para_ptr2, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_BDN) ValueSimAddPbkEntry = CFW_SimAddPbkEntry(CFW_PBK_SIM_BARRED_DIALLING, &local_para_ptr2, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_SDN) ValueSimAddPbkEntry = CFW_SimAddPbkEntry(CFW_PBK_SIM_SERVICE_DIALLING, &local_para_ptr2, FREE_UTI, adp_pPHBContext->nSimId); else if (local_para_ptr->type == MMI_PHB_ECC) ValueSimAddPbkEntry = CFW_SimAddPbkEntry(CFW_PBK_EN, &local_para_ptr2, FREE_UTI, adp_pPHBContext->nSimId); else ValueSimAddPbkEntry = ERR_CME_UNKNOWN; #endif //ADP_CFW_DUALSIM_SIMULATOR_SUPPORT #else//__ADP_MULTI_SIM__ if (local_para_ptr->type == MMI_PHB_PHONEBOOK) ValueSimAddPbkEntry = CFW_SimAddPbkEntry(CFW_PBK_SIM, &local_para_ptr2, FREE_UTI); else if (local_para_ptr->type == MMI_PHB_FDN) ValueSimAddPbkEntry = CFW_SimAddPbkEntry(CFW_PBK_SIM_FIX_DIALLING, &local_para_ptr2, FREE_UTI); else if (local_para_ptr->type == MMI_PHB_MSISDN) ValueSimAddPbkEntry = CFW_SimAddPbkEntry(CFW_PBK_ON, &local_para_ptr2, FREE_UTI); else if (local_para_ptr->type == MMI_PHB_BDN) ValueSimAddPbkEntry = CFW_SimAddPbkEntry(CFW_PBK_SIM_BARRED_DIALLING, &local_para_ptr2, FREE_UTI); else if (local_para_ptr->type == MMI_PHB_SDN) ValueSimAddPbkEntry = CFW_SimAddPbkEntry(CFW_PBK_SIM_SERVICE_DIALLING, &local_para_ptr2, FREE_UTI); else if (local_para_ptr->type == MMI_PHB_ECC) ValueSimAddPbkEntry = CFW_SimAddPbkEntry(CFW_PBK_EN, &local_para_ptr2, FREE_UTI); else ValueSimAddPbkEntry = ERR_CME_UNKNOWN; #endif//__ADP_MULTI_SIM__ //add by chenq for bug 5889 and 5800, 20070803 B mmi_trace(g_sw_ADP_PHB,"PHB set entry req CFW_SimAddPbkEntry = %d",ValueSimGetPbkEntry); switch (ValueSimAddPbkEntry) { case ERR_SUCCESS: COS_KillTimerEX(GetMmiTaskHandle(MOD_ADP),PHBLIST_COPY_OR_DELETE_TIMEROUTID ); COS_SetTimerEX(GetMmiTaskHandle(MOD_ADP), PHBLIST_COPY_OR_DELETE_TIMEROUTID, 0, (PHB_TIMEROUT_HANDWRITING_CONFIRM)MILLI_SECOND); PHBListCopyOrDeleteTimerOutErrorFUN = adp_phb_set_entry_error_rsp; mmi_trace(g_sw_ADP_PHB, "the function succeeds !\n"); break; case ERR_CFW_INVALID_PARAMETER: mmi_trace(g_sw_ADP_PHB, "The input parameter(nIndex) is invalid !\n"); break; case ERR_CFW_NOT_EXIST_FREE_UTI: mmi_trace(g_sw_ADP_PHB, "No any available free UTI in the system !\n"); break; case ERR_CFW_UTI_IS_BUSY: mmi_trace(g_sw_ADP_PHB, "The UTI is busy, maybe the UTI is used by other instance !\n"); break; case ERR_CME_MEMORY_FULL: mmi_trace(g_sw_ADP_PHB, "No any more memory to allocate !\n"); break; default: break; } //add by chenq for bug 5889 and 5800, 20070803 E if (ERR_SUCCESS != ValueSimAddPbkEntry) { adp_phb_set_entry_error_rsp(); } } } break; case MSG_ID_MMI_PHB_GET_ENTRY_BY_INDEX_REQ: { ilm_struct *oslMessage = (ilm_struct *) pCosEvent->nParam1; mmi_phb_get_entry_by_index_req_struct *local_para_ptr = (mmi_phb_get_entry_by_index_req_struct *)oslMessage->local_para_ptr; #ifdef __ADP_MULTI_SIM__ mmi_trace(g_sw_ADP_PHB, "PHB GET ENTRY by index REQ simid = %d, local_para_ptr->type = %d", adp_pPHBContext->nSimId, local_para_ptr->type); #endif /* __ADP_MULTI_SIM__ */ switch (local_para_ptr->type) { case MMI_PHB_ECC: #ifdef __ADP_MULTI_SIM__ #ifdef ADP_CFW_DUALSIM_SIMULATOR_SUPPORT ValueSimGetPbkEntry = UT_CFW_SimGetPbkStorage(CFW_PBK_EN, FREE_UTI, adp_pPHBContext->nSimId); #else ValueSimGetPbkEntry = CFW_SimGetPbkStorage(CFW_PBK_EN, FREE_UTI, adp_pPHBContext->nSimId); #endif #else ValueSimGetPbkEntry = CFW_SimGetPbkStorage(CFW_PBK_EN, FREE_UTI); #endif break; case MMI_PHB_FDN: adp_pPHBContext->flag_list_FDN = TRUE; #ifdef __ADP_MULTI_SIM__ #ifdef ADP_CFW_DUALSIM_SIMULATOR_SUPPORT ValueSimGetPbkEntry = UT_CFW_SimGetPbkStorage(CFW_PBK_SIM_FIX_DIALLING, FREE_UTI, adp_pPHBContext->nSimId); #else ValueSimGetPbkEntry = CFW_SimGetPbkStorage(CFW_PBK_SIM_FIX_DIALLING, FREE_UTI, adp_pPHBContext->nSimId); #endif #else ValueSimGetPbkEntry = CFW_SimGetPbkStorage(CFW_PBK_SIM_FIX_DIALLING, FREE_UTI); #endif break; case MMI_PHB_BDN: #ifdef __ADP_MULTI_SIM__ #ifdef ADP_CFW_DUALSIM_SIMULATOR_SUPPORT ValueSimGetPbkEntry = UT_CFW_SimGetPbkStorage(CFW_PBK_SIM_BARRED_DIALLING, FREE_UTI, adp_pPHBContext->nSimId); #else ValueSimGetPbkEntry = CFW_SimGetPbkStorage(CFW_PBK_SIM_BARRED_DIALLING, FREE_UTI, adp_pPHBContext->nSimId); #endif #else ValueSimGetPbkEntry = CFW_SimGetPbkStorage(CFW_PBK_SIM_BARRED_DIALLING, FREE_UTI); #endif break; case MMI_PHB_MSISDN: #ifdef __ADP_MULTI_SIM__ #ifdef ADP_CFW_DUALSIM_SIMULATOR_SUPPORT ValueSimGetPbkEntry = UT_CFW_SimGetPbkStorage(CFW_PBK_ON, FREE_UTI, adp_pPHBContext->nSimId); #else ValueSimGetPbkEntry = CFW_SimGetPbkStorage(CFW_PBK_ON, FREE_UTI, adp_pPHBContext->nSimId); #endif #else ValueSimGetPbkEntry = CFW_SimGetPbkStorage(CFW_PBK_ON, FREE_UTI); #endif break; case MMI_PHB_SDN: #ifdef __ADP_MULTI_SIM__ #ifdef ADP_CFW_DUALSIM_SIMULATOR_SUPPORT ValueSimGetPbkEntry = UT_CFW_SimGetPbkStorage(CFW_PBK_SIM_SERVICE_DIALLING, FREE_UTI, adp_pPHBContext->nSimId); #else ValueSimGetPbkEntry = CFW_SimGetPbkStorage(CFW_PBK_SIM_SERVICE_DIALLING, FREE_UTI, adp_pPHBContext->nSimId); #endif #else ValueSimGetPbkEntry = CFW_SimGetPbkStorage(CFW_PBK_SIM_SERVICE_DIALLING, FREE_UTI); #endif break; default: break; } mmi_trace(g_sw_ADP_PHB,"PHB get entry by index req CFW_SimGetPbkStorage = %d",ValueSimGetPbkEntry); if (ValueSimGetPbkEntry != ERR_SUCCESS) adp_phb_get_extra_number_rsp(0, 0, 0); } break; default: TBM_EXIT(0x29e3); return FALSE; } TBM_EXIT(0x29e3); return TRUE; }