📄 nvraminterface.c
字号:
&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 + -