📄 mmibookutils.c
字号:
phonebookstatus=COPYNONE;
}
break;
}
if ( CopyResult.complete==MFW_PHB_OK ) CopyNumber=CopyNumber+1;
break;
}
}
if ( i==PHBKTotal ) Copyidx=PHBKTotal;
else Copyidx=i+1;
}
}
else if ( phonebookstatus==COPYINGSELECT )
{
if ( CopyNumber==SelectTotal )//copy finished
{
GetSIMData();
Create_SORT_Table(l_phb_index,ALL_NUMBER_LIST );
CopyResult.CopyEnd=TRUE;
CopyResult.complete=MFW_PHB_OK;
phonebookstatus=COPYNONE;
}
else if ( Copyidx==SearchTotal )
{
GetSIMData();
TRACE_EVENT("copy over but fail in bookevent!");
Create_SORT_Table(l_phb_index,ALL_NUMBER_LIST );
CopyResult.CopyEnd=TRUE;
CopyResult.complete=MFW_PHB_FAIL;
phonebookstatus=COPYNONE;
}
else
{
for ( i=Copyidx;i<SearchTotal;i++ )
{
if ( bookname[i].selectflag==TRUE )
{
Index=bookname[i].index;
if ( CurrentTable!=Index/PHB_table_len )
{
flash_PBread(PBTable[Index/PHB_table_len]);
CurrentTable=Index/PHB_table_len;
}
memset(&l_phb_Shortentry,0,sizeof(l_phb_Shortentry));
l_phb_Shortentry.book=bookActiveBook(WRITE);
newstatus.book=l_phb_Shortentry.book;
memcpy(l_phb_Shortentry.name.data,FFS_PBData.NVMBook[Index%PHB_table_len].name,PHB_name_len);
l_phb_Shortentry.name.len=wstrlen((char *)l_phb_Shortentry.name.data);
switch ( CheckFirstNumFlag(Index) )
{
case 0x01:
if ( wstrlen((char *)FFS_PBData.NVMBook[Index%PHB_table_len].number)!=0 )
UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].number,l_phb_Shortentry.number);
else if ( wstrlen((char *)FFS_PBData.NVMBook[Index%PHB_table_len].home)!=0 )
UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].home,l_phb_Shortentry.number);
else if ( wstrlen((char *)FFS_PBData.NVMBook[Index%PHB_table_len].office)!=0 )
UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].office,l_phb_Shortentry.number);
break;
case 0x02:
if ( wstrlen((char *)FFS_PBData.NVMBook[Index%PHB_table_len].home)!=0 )
UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].home,l_phb_Shortentry.number);
else if ( wstrlen((char *)FFS_PBData.NVMBook[Index%PHB_table_len].number)!=0 )
UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].number,l_phb_Shortentry.number);
else if ( wstrlen((char *)FFS_PBData.NVMBook[Index%PHB_table_len].office)!=0 )
UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].office,l_phb_Shortentry.number);
break;
case 0x03:
if ( wstrlen((char *)FFS_PBData.NVMBook[Index%PHB_table_len].office)!=0 )
UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].office,l_phb_Shortentry.number);
else if ( wstrlen((char *)FFS_PBData.NVMBook[Index%PHB_table_len].number)!=0 )
UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].number,l_phb_Shortentry.number);
else if ( wstrlen((char *)FFS_PBData.NVMBook[Index%PHB_table_len].home)!=0 )
UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].home,l_phb_Shortentry.number);
break;
//================================================================================================
}
//UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].number,l_phb_Shortentry.number);
switch ( addName(l_phb_Shortentry.book,&l_phb_Shortentry,&newstatus) )
{
case MFW_PHB_OK :
{
TRACE_EVENT("OK");
CopyResult.CopyEnd=FALSE;
CopyResult.complete=MFW_PHB_OK;
}
break;
case MFW_PHB_FULL :
{
// Phone book full
TRACE_EVENT("full");
GetSIMData();
Create_SORT_Table(l_phb_index,ALL_NUMBER_LIST );
CopyResult.CopyEnd=TRUE;
CopyResult.complete=MFW_PHB_FULL;
phonebookstatus=COPYNONE;
}
break;
case MFW_PHB_FAIL :
default:
{
TRACE_EVENT("out or fail");
GetSIMData();
Create_SORT_Table(l_phb_index,ALL_NUMBER_LIST );
CopyResult.CopyEnd=TRUE;
CopyResult.complete=MFW_PHB_FAIL;
phonebookstatus=COPYNONE;
}
break;
}
if ( CopyResult.complete==MFW_PHB_OK ) CopyNumber=CopyNumber+1;
break;
}
}
if ( i==SearchTotal ) Copyidx=SearchTotal;
else Copyidx=i+1;
}
}
}
break;
default:
{
// indicate we haven't dealt with event
return MFW_EVENT_PASSED;
}
break;
}
// got to here, we have dealt with the event
return MFW_EVENT_CONSUMED;
}
/*******************************************************************************
$Function: bookCreateNewPhoneBook
$Description: Creates a single view of the phone book object, this is
called as part of the initialisation sequence, then the
book is used in all subsequent phone book operations.
$Returns: None.
$Arguments: None.
*******************************************************************************/
void bookCreateNewPhoneBook( void )
{
GlobalPhoneBookHandle = (T_phbk *) ALLOC_MEMORY( sizeof( T_phbk ) );
}
/*******************************************************************************
$Function: bookDeletePhoneBook
$Description: Deletes the global phone book instance
$Returns: None.
$Arguments: None.
*******************************************************************************/
void bookDeletePhoneBook( void )
{
if ( GlobalPhoneBookHandle )
FREE_MEMORY( (void *) GlobalPhoneBookHandle, sizeof( T_phbk ) );
GlobalPhoneBookHandle = NULL;
}
T_MFW_UPN_LIST * GetOwnNumber(void)
{
return upnList;
}
/*******************************************************************************
$Function: bookFetchPhoneBookHandle
$Description: Provides handle of global phone book
$Returns: pointer to the phone book instance
$Arguments: None.
*******************************************************************************/
T_phbk *bookFetchPhoneBookHandle( void )
{
return GlobalPhoneBookHandle;
}
//index input value: Index=l_phb_sort_index[0].index;
// Index=Searchbuffer[0]->index;
BOOL ReadSIMRecord( int Index,T_MFW_PHB_ENTRY * l_phb_Shortentry )
{
T_MFW_PHB_ENTRY TempEntry;
T_MFW_PHB_LIST l_phb_list; /* phonebook list */
T_MFW ret;
char temp[100];
memset(&TempEntry,0,sizeof(TempEntry));
memset(&l_phb_list,0,sizeof(l_phb_list));
l_phb_list.entry=&TempEntry;
l_phb_list.num_entries=1;
TRACE_EVENT("readsimrecord");
//ret=phb_read_entries(PHB_ADN,Index-ALL_NVM_LIST+1,MFW_PHB_INDEX,1,&l_phb_list);//l_phb_index[Index].index
// ret=phb_read_entries(PHB_ADN,l_phb_index[Index].index,MFW_PHB_PHYSICAL,1,&l_phb_list);//l_phb_index[Index].index
// sprintf(temp,"Read SIM:%d",ret);
// TRACE_EVENT(temp);
// if (ret==MFW_PHB_OK)
{
memcpy(l_phb_Shortentry->name.data,l_phb_index[Index].name,PHB_name_len+2);
UnCompressNum((char *)SimNumber[Index-ALL_NVM_LIST],l_phb_Shortentry->number);
//memcpy(l_phb_Shortentry->name.data,TempEntry.name.data,PHB_name_len);
//memcpy(l_phb_Shortentry->number,TempEntry.number,PHB_number_len);
l_phb_Shortentry->index = l_phb_index[Index].index;
l_phb_Shortentry->book = PHB_ADN; //TempEntry.book
return TRUE;
}
//else return FALSE;
}
BOOL ReadNVMRecord( int Index,PhbkDetailItem * l_phb_NVMentry)
{
if ( CurrentTable != Index/PHB_table_len )
{
if ( flash_PBread(PBTable[Index/PHB_table_len])!=0 )
CurrentTable=Index/PHB_table_len;
else return FALSE;
}
memset(l_phb_NVMentry->memo,0,PHB_memo_len+3);
FFS_PBData.NVMBook[Index%PHB_table_len].name[PHB_name_len]=0x00;
FFS_PBData.NVMBook[Index%PHB_table_len].name[PHB_name_len+1]=0x00;
FFS_PBData.NVMBook[Index%PHB_table_len].name[PHB_name_len+2]=0x00;
memcpy(l_phb_NVMentry->name,FFS_PBData.NVMBook[Index%PHB_table_len].name,PHB_name_len+3);
UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].number,l_phb_NVMentry->number);
UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].office,l_phb_NVMentry->office);
UnCompressNum((char *)FFS_PBData.NVMBook[Index%PHB_table_len].home,l_phb_NVMentry->home);
memcpy(l_phb_NVMentry->memo,FFS_PBData.NVMBook[Index%PHB_table_len].memo,PHB_memo_len+1);
l_phb_NVMentry->info=FFS_PBData.NVMBook[Index%PHB_table_len].info;
return TRUE;
}
BOOL FindName(const char * name,char * number)//return number
{
int i;
T_MFW_PHB_ENTRY l_phb_ShortEntry;
PhbkDetailItem l_phb_NVMEntry;
for ( i=0;i<PHBKTotal;i++ )
{
if ( strcmp((char *)l_phb_index[l_phb_sort_index[i].index].name,(char *)name)==0 )
{
if ( l_phb_index[l_phb_sort_index[i].index].phonebook==SIM_BOOK_SEL )
{
if ( ReadSIMRecord(l_phb_index[l_phb_sort_index[i].index].index,&l_phb_ShortEntry)==TRUE )
{
strncpy(number,(char *)l_phb_ShortEntry.number,PHB_number_len);
return TRUE;
}
}
else if ( l_phb_index[l_phb_sort_index[i].index].phonebook==NVM_BOOK_SEL )
{
if ( ReadNVMRecord(l_phb_index[l_phb_sort_index[i].index].index,&l_phb_NVMEntry)==TRUE )
{
switch ( CheckFirstNumFlag(l_phb_sort_index[i].index) )
{
case 0x01:
{
strncpy(number,(char *)l_phb_NVMEntry.number,PHB_number_len);
return TRUE;
}
break;
case 0x02:
{
strncpy(number,(char *)l_phb_NVMEntry.home,PHB_number_len);
return TRUE;
}
break;
case 0x03:
{
strncpy(number,(char *)l_phb_NVMEntry.office,PHB_number_len);
return TRUE;
}
break;
}
}
}
}
}
return FALSE;
}
//yq added for mo in phb or ldn
BOOL SetCallData(T_EasyName data)
{
memset(&CallData,0,sizeof(T_EasyName));
memcpy(CallData.name,data.name,PHB_name_len+2);
memcpy(CallData.number,data.number,PHB_number_len+1);
return TRUE;
}
BOOL FindCallNumber(char *number,T_FindName * searchdata)
{
TRACE_FUNCTION("findcallnumber()");
TRACE_EVENT(number);
/* if ((bookPhoneBookLoading()==BOOK_FAILURE))
{
SimReadyFlag=1;
return FALSE;
}
else
SimReadyFlag=0;
*/ if ( SameNumber(number,(char *)CallData.number)==0 )
{
TRACE_EVENT("we neednot call findnumber");
if ( wstrlen((char *)CallData.name)!=0 )
{
memcpy(searchdata->name,CallData.name,PHB_name_len+2);
memset(&CallData,0,sizeof(T_EasyName));
return TRUE;
}
else
return FALSE;
}
else
{
memset(&CallData,0,sizeof(T_EasyName));
return FindNumber(number,searchdata);
}
}
//end yq added
BOOL FindNumber(char *number,T_FindName * searchdata)//return name
{
int i,j;
unsigned char backstr[PHB_name_len];
T_MFW_PHB_ENTRY l_phb_ShortEntry;
BOOL backvalue;
char temp[100];
TRACE_FUNCTION("findnumber()");
TRACE_EVENT(number);
memset(backstr,'\0',PHB_name_len);
backvalue=FALSE;
/* 2004/04/30 sunsj modify */
memset(searchdata->name, 0x00, PHB_name_len+3);
searchdata->GroupIndex=0xff;//iniatial, availd value is 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -