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

📄 nvraminterface.c

📁 MTK手机平台的MMI部分的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                            &error,
                            fileName,
                            lineNumber);
                if (status == -1)
                {
                    MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_ERROR_NVM_READ_VAL_INT_HDLR));
                    *pError = -1;
                    return status;
                }
                MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_READ_VAL_INT_INFO2_HDLR, nDataType));
                /* copy out all total reading data */
                memcpy(byte_data, tempBuffer, sizeof(tempBuffer));
                byteDataReadFlag = 1;
                /* return first request item data */
                memcpy(pBuffer, &byte_data[nDataItemId * nDataType], nDataType);
                status = DS_BYTE;
                error = NVRAM_READ_SUCCESS;

            }
            break;
        }   /* End of case DS_BYTE */

        case DS_SHORT:
        {
            if (uintDataReadFlag)
            {
                MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_READ_VAL_INT_INFO_HDLR, nDataType));
                /* Data is cached no need to read from NVRAM */
                memcpy(pBuffer, &uint_data[nDataItemId * nDataType], nDataType);
                status = DS_SHORT;
                error = NVRAM_READ_SUCCESS;
            }
            else
            {
                /* Read data from the NVRAM file */
                /* NVRAM_CACHED_FILE_LID is defined in Pluto NVRAM files */
                U8 tempBuffer[NVRAM_CACHE_SIZE];

                status = ReadRecordInt(
                            NVRAM_EF_CACHE_SHORT_LID,
                            1,
                            tempBuffer,
                            sizeof(tempBuffer),
                            &error,
                            fileName,
                            lineNumber);
                if (status == -1)
                {
                    MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_ERROR_NVM_READ_VAL_INT_HDLR));
                    *pError = -1;
                    return status;
                }
                MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_READ_VAL_INT_INFO2_HDLR, nDataType));
                memcpy(uint_data, tempBuffer, NVRAM_CACHE_SIZE);
                uintDataReadFlag = 1;
                memcpy(pBuffer, &uint_data[nDataItemId * nDataType], nDataType);
                status = DS_SHORT;
                error = NVRAM_READ_SUCCESS;

            }
            break;
        }   /* End of case DS_SHORT */

        case DS_DOUBLE:
        {
            if (doubleDataReadFlag)
            {
                MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_READ_VAL_INT_INFO_HDLR, nDataType));
                /* Data is cached no need to read from NVRAM */
                memcpy(pBuffer, &double_data[nDataItemId * nDataType], nDataType);
                status = DS_DOUBLE;
                error = NVRAM_READ_SUCCESS;
            }
            else
            {
                /* Read data from the NVRAM file */
                /* NVRAM_CACHED_FILE_LID is defined in Pluto NVRAM files */
                U8 tempBuffer[NVRAM_CACHE_SIZE];

                status = ReadRecordInt(
                            NVRAM_EF_CACHE_DOUBLE_LID,
                            1,
                            tempBuffer,
                            NVRAM_CACHE_SIZE,
                            &error,
                            fileName,
                            lineNumber);
                if (status == -1)
                {
                    MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_ERROR_NVM_READ_VAL_INT_HDLR));
                    *pError = -1;
                    return status;
                }
                MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_READ_VAL_INT_INFO2_HDLR, nDataType));
                memcpy(double_data, tempBuffer, NVRAM_CACHE_SIZE);
                doubleDataReadFlag = 1;
                memcpy(pBuffer, &double_data[nDataItemId * nDataType], nDataType);
                status = DS_DOUBLE;
                error = NVRAM_READ_SUCCESS;

            }
            break;
        }   /* End of case DS_DOUBLE */
    }

    *pError = error;
    return status;
}


/*****************************************************************************
 * FUNCTION
 *  WriteValueInt
 * DESCRIPTION
 *  User level API to write 1 byte , 2 byte and 8 byte
 *  
 *  The nBufferSize shall be even
 * PARAMETERS
 *  nDataItemId     [IN]        Data Item ID
 *  pBuffer         [IN]        Buffer in which data need to
 *  nDataType       [IN]        
 *  pError          [OUT]       Error returned from PS
 *  fileName        [?]         
 *  lineNumber      [IN]        
 *  memory(?)       [IN]        For this.
 *  be(?)           [IN]        Retrieved,caller will allocate
 * RETURNS
 * BOOL
 *  
 *****************************************************************************/
S32 WriteValueInt(U8 nDataItemId, void *pBuffer, U8 nDataType, S16 *pError, S8 *fileName, S32 lineNumber)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    S16 error = -1;
    S32 status = -1;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_WRITE_VAL_INT_HDLR, nDataItemId, nDataType));

    switch (nDataType)
    {
        case DS_BYTE:
        {
            /* second time access, it always sets the request item */
            if (byteDataReadFlag)
            {
                MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_WRITE_VAL_INT_INFO_HDLR, nDataType));
                /* Data is cached no need to read from NVRAM */
                memcpy(&byte_data[nDataItemId * nDataType], pBuffer, nDataType);
                /* write into NVRAM module, if not wait for falshing directly */
                if (!byteDataWriteFlashFlag)
                {
                    status = WriteRecordInt(
                                NVRAM_EF_CACHE_BYTE_LID,
                                1,
                                byte_data,
                                NVRAM_CACHE_SIZE,
                                &error,
                                fileName,
                                lineNumber);
                    if (status == -1)
                    {
                        MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_ERROR_NVM_WRITE_VAL_INT_HDLR));
                        *pError = -1;
                        return status;
                    }
                }
                status = DS_BYTE;
                error = NVRAM_WRITE_SUCCESS;
            }
            /* process first time access all data and return first write item data */
            else
            {
                /* Read all data from the NVRAM file */
                /* NVRAM_CACHED_FILE_LID is defined in Pluto NVRAM files */
                status = ReadRecordInt(
                            NVRAM_EF_CACHE_BYTE_LID,
                            1,
                            byte_data,
                            NVRAM_CACHE_SIZE,
                            &error,
                            fileName,
                            lineNumber);
                if (status == -1)
                {
                    MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_ERROR_NVM_READ_VAL_INT_HDLR));
                    *pError = -1;
                    return status;
                }
                MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_WRITE_VAL_INT_INFO2_HDLR, nDataType));
                memcpy(&byte_data[nDataItemId * nDataType], pBuffer, nDataType);
                /* write into NVRAM module, if not wait for falshing directly */
                if (!byteDataWriteFlashFlag)
                {
                    status = WriteRecordInt(
                                NVRAM_EF_CACHE_BYTE_LID,
                                1,
                                byte_data,
                                NVRAM_CACHE_SIZE,
                                &error,
                                fileName,
                                lineNumber);
                }
                byteDataReadFlag = 1;
                status = DS_BYTE;
                error = NVRAM_WRITE_SUCCESS;
            }
            break;
        }   /* End of case DS_BYTE */

        case DS_SHORT:
        {
            if (uintDataReadFlag)
            {
                MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_WRITE_VAL_INT_INFO_HDLR, nDataType));
                /* Data is cached no need to read from NVRAM */
                memcpy(&uint_data[nDataItemId * nDataType], pBuffer, nDataType);
                /* write into NVRAM module, if not wait for falshing directly */
                if (!uintDataWriteFlashFlag)
                {
                    status = WriteRecordInt(
                                NVRAM_EF_CACHE_SHORT_LID,
                                1,
                                uint_data,
                                NVRAM_CACHE_SIZE,
                                &error,
                                fileName,
                                lineNumber);
                    if (status == -1)
                    {
                        MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_ERROR_NVM_WRITE_VAL_INT_HDLR));
                        *pError = -1;
                        return status;
                    }
                }
                status = DS_SHORT;
                error = NVRAM_WRITE_SUCCESS;

            }
            else
            {
                /* Read data from the NVRAM file */
                /* NVRAM_CACHED_FILE_LID is defined in Pluto NVRAM files */
                status = ReadRecordInt(
                            NVRAM_EF_CACHE_SHORT_LID,
                            1,
                            uint_data,
                            NVRAM_CACHE_SIZE,
                            &error,
                            fileName,
                            lineNumber);
                if (status == -1)
                {
                    MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_ERROR_NVM_READ_VAL_INT_HDLR));
                    *pError = -1;
                    return status;
                }
                MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_WRITE_VAL_INT_INFO2_HDLR, nDataType));
                memcpy(&uint_data[nDataItemId * nDataType], pBuffer, nDataType);
                /* write into NVRAM module, if not wait for falshing directly */
                if (!uintDataWriteFlashFlag)
                {
                    WriteRecordInt(
                        NVRAM_EF_CACHE_SHORT_LID,
                        1,
                        uint_data,
                        NVRAM_CACHE_SIZE,
                        &error,
                        fileName,
                        lineNumber);
                }
                uintDataReadFlag = 1;
                status = DS_SHORT;
                error = NVRAM_WRITE_SUCCESS;
            }
            break;
        }   /* End of case DS_SHORT */

        case DS_DOUBLE:
        {
            if (doubleDataReadFlag)
            {
                MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_WRITE_VAL_INT_INFO_HDLR, nDataType));
                /* Data is cached no need to read from NVRAM */
                memcpy(&double_data[nDataItemId * nDataType], pBuffer, nDataType);
                /* write into NVRAM module, if not wait for falshing directly */
                if (!doubleDataWriteFlashFlag)
                {
                    status = WriteRecordInt(
                                NVRAM_EF_CACHE_DOUBLE_LID,
                                1,
                                double_data,
                                NVRAM_CACHE_SIZE,
                                &error,
                                fileName,
                                lineNumber);
                    if (status == -1)
                    {
                        MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_ERROR_NVM_WRITE_VAL_INT_HDLR));
                        *pError = -1;
                        return status;
                    }
                }
                status = DS_DOUBLE;
                error = NVRAM_WRITE_SUCCESS;
            }
            else
            {
                MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_WRITE_VAL_INT_INFO_HDLR, nDataType));
                /* Read data from the NVRAM file */
                /* NVRAM_CACHED_FILE_LID is defined in Pluto NVRAM files */
                status = ReadRecordInt(
                            NVRAM_EF_CACHE_DOUBLE_LID,
                            1,
                            double_data,
                            NVRAM_CACHE_SIZE,
                            &error,
                            fileName,
                            lineNumber);
                if (status == -1)
                {
                    MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_ERROR_NVM_READ_VAL_INT_HDLR));
                    *pError = -1;
                    return status;
                }
                memcpy(&double_data[nDataItemId * nDataType], pBuffer, nDataType);
                /* write into NVRAM module, if not wait for falshing directly */
                if (!doubleDataWriteFlashFlag)
                {
                    status = WriteRecordInt(
                                NVRAM_EF_CACHE_DOUBLE_LID,
                                1,
                                double_data,
                                NVRAM_CACHE_SIZE,
                                &error,
                                fileName,
                                lineNumber);
                    if (status == -1)
                    {
                        MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_ERROR_NVM_WRITE_VAL_INT_HDLR));
                        *pError = -1;
                        return status;
                    }
                }
                status = DS_DOUBLE;
                error = NVRAM_WRITE_SUCCESS;
                doubleDataReadFlag = 1;
            }
            break;
        }   /* End of case DS_DOUBLE */

    }   /* End of switch */

    *pError = error;
    return status;
}


/*****************************************************************************
 * FUNCTION
 *  SetFlashNVRAMCatchData
 * DESCRIPTION
 *  This function is to set the flag if want to flash the BYTE, SHORT, or DOUBLE of catch datas into NVRAM.
 * PARAMETERS
 *  nDataType                   [IN]        
 *  l_DataWriteFlashFlag        [IN]        
 *  a(?)                        [IN]        Is to enable to flash into NVRAM or not, TRUE is to flash into NVRAM, otherwise is false.
 * RETURNS
 *  Data set success or not.
 *****************************************************************************/
U8 SetFlashNVRAMCatchData(U8 nDataType, U8 l_DataWriteFlashFlag)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    MMI_TRACE((MMI_TRACE_G1_FRM, MMI_FRM_INFO_NVM_FLASH_CATCH_DATA_HDLR, nDataType, l_DataWriteFlashFlag));

    switch (nDataType)
    {
        case DS_BYTE:
            byteDataWriteFlashFlag = l_DataWriteFlashFlag;
            break;
        case DS_SHORT:
            uintDataWriteFlashFlag = l_DataWriteFlashFlag;
            break;
        case DS_DOUBLE:
            doubleDataWriteFlashFlag = l_DataWriteFlashFlag;
            break;
        defau

⌨️ 快捷键说明

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