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

📄 mmibookutils.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
                                    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 + -