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

📄 mfw_ffs.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
        default:break;
        }
    }
    return ShortNum;
}

void CompressNum(const char * Num,unsigned char CompNum[])
{
    int  len,i;

    len=strlen(Num);
    for( i=0;i<len;i++ )
    {
        if( i%2==0 )
        {
            if( Num[i]==35 )
                CompNum[i/2]=2;
            else if( Num[i]==42 )
                CompNum[i/2]=3;
            else if( Num[i]==112 )
                CompNum[i/2]=4;
            else
                CompNum[i/2]=Num[i]-42;
        }
        else if( i%2==1 )
        {
            if( Num[i]==35 )
                CompNum[i/2]=(CompNum[i/2]<<4)+2;
            else if( Num[i]==42 )
                CompNum[i/2]=(CompNum[i/2]<<4)+3;
            else if( Num[i]==112 )
                CompNum[i/2]=(CompNum[i/2]<<4)+4;
            else
                CompNum[i/2]=(CompNum[i/2]<<4)+(Num[i]-42);
        }
    }

    if( i%2==1 ) CompNum[i/2]=(CompNum[i/2]<<4)+0x00;
    else if( i%2==0 ) CompNum[i/2]=0x00;
}

void UnCompressNum(const char * CompNum,unsigned char Num[])
{
    int  i,j,ExitFlag;
    unsigned char GetByte;

    i=0;
    j=0;
    ExitFlag=0;
    do
    {
        GetByte=(CompNum[i]>>4) & 0x0F;
        if( GetByte!=0x00 )
        {
            if( GetByte==2 )
                Num[j]=35;
            else if( GetByte==3 )
                Num[j]=42;
            else if( GetByte==4 )
                Num[j]=112;
            else
                Num[j]=GetByte+42;
            j=j+1;
        }
        else
        {
            Num[j]='\0';
            ExitFlag=1;
        }

        if( ExitFlag!=1 )
        {
            GetByte=CompNum[i] & 0x0F;
            if( GetByte!=0x00 )
            {
                if( GetByte==2 )
                    Num[j]=35;
                else if( GetByte==3 )
                    Num[j]=42;
                else if( GetByte==4 )
                    Num[j]=112;
                else
                    Num[j]=GetByte+42;
                j=j+1;
            }
            else
            {
                Num[j]='\0';
                ExitFlag=1;
            }
            i=i+1;
        }
    }
    while( ExitFlag==0 );
}
//------------------------------------------------------------------------------------------
//begin xzy add for fieldtest 0124
effs_t flash_FTwrite()
{
    MmiTrace("flash_FTwrite");

    //return ffs_fwrite("/mmi/MmiData",  &FFS_flashData, sizeof(FFS_flashData));
    //ffsfileCmd.ffsfile[MMIFileIdx].pdir=FFSFILE_FIELDTEST_PATH;
    //ffsfileCmd.ffsfile[MMIFileIdx].pdata=&FFS_FieldTest;
    //ffsfileCmd.ffsfile[MMIFileIdx].size=sizeof(FFS_FieldTest);
    //ffsfileCmd.ffsfile[MMIFileIdx].writeStatus=1;
    //if time is stop
    ffs_fwrite(FFSFILE_FIELDTEST_PATH, &FFS_FieldTest, sizeof(FFS_FieldTest));

    return 0;

}

effs_t flash_FTread()
{
    FFS_FieldTest= FieldTestDefault;
    /* 2004/04/22 sunsj modify */
    return ffs_fread(FFSFILE_FIELDTEST_PATH,  &FFS_FieldTest, sizeof(FFS_FieldTest));

}
//end xzy add for fieldtest 0124
effs_t flash_write()
{ //write_flag = DATA;
    MmiTrace("flash_write");

    //return ffs_fwrite("/mmi/MmiData",  &FFS_flashData, sizeof(FFS_flashData));
    ffsfileCmd.ffsfile[MMIFileIdx].pdir=FFSFILE_CONFIG_PATH;
    ffsfileCmd.ffsfile[MMIFileIdx].pdata=&FFS_flashData;
    ffsfileCmd.ffsfile[MMIFileIdx].size=sizeof(FFS_flashData);
    ffsfileCmd.ffsfile[MMIFileIdx].writeStatus=1;
    //if time is stop

    return 0;
}

#if 0
effs_t flash_update()
{
    if( write_flag == DATA )
    {
        write_flag = NO_DATA;
        return ffs_fwrite(FFSFILE_CONFIG_PATH, &FFS_flashData, sizeof(FFS_flashData));
    }
    else
        return EFFS_OK;
}
#endif
#ifndef WIN32
// EF 22/10/02	for WIN32 simulation, set anykeyanswer on, and keylock off
int flash_read()
{ 
    FlashDataInitialise();      //hxl add for avoid fread fail error 2002-11-25
    /* 2004/04/22 sunsj modify */
    return ffs_fread(FFSFILE_CONFIG_PATH, &FFS_flashData, sizeof(FFS_flashData));
}
#else
int flash_read()
{FFS_flashData.settings_status|= SettingsAnyKeyAnswerOn;
    FFS_flashData.settings_status &= ~SettingsKeyPadLockOn;
}
#endif


effs_t flash_data_write(const char* dir_name, const char* file_name, void* data_pointer, int data_size)
{ 
    T_FFS_DIR dir;
    int val;
    char file[200];

    /* SPR#2487 - DS - If FFS is not formatted, return from function */
    if (flash_formatted() == FALSE)
    {
        TRACE_EVENT("ERROR flash_data_write(): NOT FORMATTED!");
        return EFFS_NOFORMAT;
    }

    val = FFS_opendir(dir_name, &dir);

    if(val < 0)
    {
        val = FFS_mkdir(dir_name);
        
        switch(val)
        {
        case EFFS_OK:
        case EFFS_EXISTS:
            break;
        default:
                TRACE_ERROR("The FFS directory could not be created!");
              	TRACE_EVENT_P2("val = %d dir name = %s", val, dir_name);
            return (effs_t)val; 	
        }
    }

    sprintf(file, "%s/%s", dir_name, file_name);
    val = FFS_fwrite( file, data_pointer, data_size);

    if(val NEQ EFFS_OK)
    {  
        TRACE_ERROR("The FFS file could not be created");
      	TRACE_EVENT_P2("val = %d file name = %s", val, file);
    }  
    return (effs_t)val;
}

/* glowing,2004-06-10, import from TCS2112 */
/* Marcus: Issue 1719: 11/02/2003: Changed return value from effs_t to int */
int flash_data_read(const char* dir_name, const char* file_name, void* data_pointer, int data_size)
{ 
    int val;
    char file[200];
      
    sprintf(file, "%s/%s", dir_name, file_name);

    val = FFS_fread( file, data_pointer, data_size);
    if (val NEQ data_size)
    {
        TRACE_ERROR("The FFS data could not be read!");
        TRACE_EVENT_P1("val = %d", val);
        /* Error, presumably -ve as in FFS_ERRORS, or the actual number of bytes read */
    }
    return val;
}

/* SPR#2487 - DS - Function to check if FFS is formatted */
int flash_formatted(void)
{
    T_FFS_DIR dir;
    int val;

    /* Attempt to open "/mmi" directory */
    val = FFS_opendir("/mmi", &dir);

    /* If return val is not EFFS_NOFORMAT then 
     * assume that FFS is formatted.
     */
    if (val == EFFS_NOFORMAT)
        return FALSE;
    else
        return TRUE;
}
    
/* glowing,2004-06-10, end of import */

/*.................... zy changed 04/08/02...................................................*/
effs_t flash_settingwrite()
{ //write_flag = DATA;
    MmiTrace("flash_settingwrite");

    //return ffs_fwrite("/mmi/SettingData",  &FlashSettingData, sizeof(FlashSettingData));
    ffsfileCmd.ffsfile[SetFileIdx].pdir=FFSFILE_SETTING_PATH;
    ffsfileCmd.ffsfile[SetFileIdx].pdata=&FlashSettingData;
    ffsfileCmd.ffsfile[SetFileIdx].size=sizeof(FlashSettingData);
    ffsfileCmd.ffsfile[SetFileIdx].writeStatus=1;
    //if time is stop
    return 0;

}//zy Mobile Innovation 


effs_t flash_settingread()
{
    FlashSettingInitialise();   //hxl add for avoid fread fail error 2002-11-25
    /* 2004/04/22 sunsj modify */
    return ffs_fread(FFSFILE_SETTING_PATH, &FlashSettingData, sizeof(FlashSettingData));
}//zy Mobile Innovation
//start of xsf add 2002.08.05
effs_t flash_hostwrite()
{ 
    MmiTrace("flash_hostwrite");

    //return ffs_fwrite("/mmi/HostkeyData",  &FlashHostkeyData, sizeof(FlashHostkeyData));
    /*ffsfileCmd.ffsfile[HstKeyFileIdx].pdir=FFSFILE_HOSTKEY_PATH;
    ffsfileCmd.ffsfile[HstKeyFileIdx].pdata=&FlashHostkeyData;
    ffsfileCmd.ffsfile[HstKeyFileIdx].size=sizeof(FlashHostkeyData);
    ffsfileCmd.ffsfile[HstKeyFileIdx].writeStatus=1;*/
    //xsf changed 2003.03.06 for "hostkey protect options" menu with KCD_OK/select .KCD_RIGHT/cancel.KCD_LEFT/confirm&save
    /* 2004/04/22 sunsj modify */
    ffs_fwrite(FFSFILE_HOSTKEY_PATH,  &FlashHostkeyData, sizeof(FlashHostkeyData));  
    return 0;

}

effs_t flash_hostread()
{
    FlashHostkeyInitialise();   //hxl add for avoid fread fail error 2002-11-25
    /* 2004/04/22 sunsj modify */
    return ffs_fread(FFSFILE_HOSTKEY_PATH, &FlashHostkeyData, sizeof(FlashHostkeyData));
}

effs_t flash_environmentwrite()
{ //write_flag = DATA;

    // return ffs_fwrite("/mmi/EnvironmentData",  &FlashEnvironmentData, sizeof(FlashEnvironmentData));
    ffsfileCmd.ffsfile[EnvirFileIdx].pdir=FFSFILE_ENVIR_PATH;
    ffsfileCmd.ffsfile[EnvirFileIdx].pdata=&FlashEnvironmentData;
    ffsfileCmd.ffsfile[EnvirFileIdx].size=sizeof(FlashEnvironmentData);
    ffsfileCmd.ffsfile[EnvirFileIdx].writeStatus=1;
    //if time is stop
    //	timStart(gtimFfsWrite);
    return 0;


}
effs_t flash_environmentread()
{
    FlashEnviroInitialise();    //hxl add for avoid fread fail error 2002-11-25
    return ffs_fread(FFSFILE_ENVIR_PATH,  &FlashEnvironmentData, sizeof(FlashEnvironmentData));
}
//end of xsf add 2002.08.05
/*
effs_t flash_PBmkdir(const char *pathname)
{
  return ffs_mkdir(pathname);
}

effs_t flash_CheckStat(const char *name)
{
  struct stat_s stat;

  return ffs_stat(name,&stat);
}
*/
/*....................end of zy changed 04/08/02...................................................*/
//---------------------------hxl add--------------------------------
void FlashDataInitialise(void)
{
    FFS_flashData = FlashDefaultData;
}

//--------------------------gdy add---------------------------------

effs_t Flash_ScheInitWrite(char * filename)
{
    int idx=0;
    char *path=0;
    char str[20]="/bmi/";   /* 2004/04/22 sunsj modify */
    strcat(str,filename);
    strcpy((char*)CurrentScheFileName,filename);
    MmiTrace("Flash_ScheInitWrite");

    //return ffs_fwrite( str, &FFS_ScheData,sizeof(FFS_ScheData));
    /* 2004/04/22 sunsj modify */
    switch( filename[12] )   //"DateSchedule1"
    {
    case 0x31:
        idx=Sche1FileIdx;
        path=FFSFILE_SCHEDUE1_PATH;
        break;
    case 0x32:
        idx=Sche2FileIdx;
        path=FFSFILE_SCHEDUE2_PATH;
        break;
    case 0x33:
        idx=Sche3FileIdx;
        path=FFSFILE_SCHEDUE3_PATH;
        break;
    default:
        break;
    }

    ffsfileCmd.ffsfile[idx].pdir=path;
    ffsfileCmd.ffsfile[idx].pdata=&FFS_ScheData;
    ffsfileCmd.ffsfile[idx].size=sizeof(FFS_ScheData);
    ffsfileCmd.ffsfile[idx].writeStatus=1;
    //if time is stop
    return 0;
}

int  Flash_ScheRead(char * filename)
{
    char str[20]="/bmi/";   /* 2004/04/22 sunsj modify */
    int iCount;
    strcat(str,filename);
    strcpy((char*)CurrentScheFileName,filename);
    memset(&FFS_ScheData,0,sizeof(FFS_ScheData));
    FlashScheDataInitialise();  //hxl add for avoid fread fail error 2002-11-25
    iCount=ffs_fread(str, &FFS_ScheData,sizeof(FFS_ScheData));
    //TraceInt(iCount);
    iCount/=sizeof(FlashSchedule);
    //TraceInt(iCount);
    return iCount;
}

void FlashScheDataInitialise(void)
{
    FFS_ScheData=FlashScheduleDefaultData;
    //memset(&FFS_ScheData,0,sizeof(Flash_Sche));
}

effs_t flash_Stopwrite()
{ //write_flag = DATA;
    MmiTrace("flash_Stopwrite");

    // return ffs_fwrite("/mmi/stopwatch",  &FFS_StopwData, sizeof(FFS_StopwData));
    ffsfileCmd.ffsfile[StpWatFileIdx].pdir=FFSFILE_STOPWATCH_PATH;
    ffsfileCmd.ffsfile[StpWatFileIdx].pdata=&FFS_StopwData;
    ffsfileCmd.ffsfile[StpWatFileIdx].size=sizeof(FFS_StopwData);
    ffsfileCmd.ffsfile[StpWatFileIdx].writeStatus=1;
    //if time is stop

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -