650 lines
20 KiB
C
Executable File
650 lines
20 KiB
C
Executable File
/**
|
|
PStore driver export variables and function prototypes.
|
|
|
|
PStore is novatek original simple file system.
|
|
For access permanent storage in embeded system.
|
|
|
|
@file PStore.h
|
|
@ingroup mIPStore
|
|
|
|
Copyright Novatek Microelectronics Corp. 2011. All rights reserved.
|
|
*/
|
|
|
|
|
|
#ifndef _PSTORE_H
|
|
#define _PSTORE_H
|
|
|
|
#include <kwrap/type.h>
|
|
#include <strg_def.h>
|
|
/**
|
|
@addtogroup mIPStore
|
|
*/
|
|
|
|
/**
|
|
PStore register kernel resource API;user would intall before open PStore
|
|
*/
|
|
extern void PStore_InstallID(void) _SECTION(".kercfg_text");
|
|
|
|
|
|
/**
|
|
PStore release kernel resource API;user would unintall after close PStore
|
|
*/
|
|
extern void PStore_UninstallID(void);
|
|
/**
|
|
Register PStore cmd table to system.
|
|
|
|
@return void.
|
|
*/
|
|
extern void PStore_InstallCmd(void);
|
|
|
|
|
|
/**
|
|
@name PStore read / write operation attribute.
|
|
These bits can be OR'd.
|
|
*/
|
|
//@{
|
|
#define PS_RDONLY 0x1 ///<Read only
|
|
#define PS_WRONLY 0x2 ///<Write only
|
|
#define PS_RDWR (PS_RDONLY|PS_WRONLY) ///<Read and write
|
|
#define PS_CREATE 0x4 ///<Create a new section when the section not existence. Can be OR'd with read and write flag.
|
|
#define PS_UPDATE 0x8 ///<Update exist section data,not change section size and header table
|
|
//@}
|
|
|
|
|
|
/**
|
|
@name PStore header identification.
|
|
Used for check section return value or restore header parameter
|
|
|
|
*/
|
|
//@{
|
|
#define PS_HEAD1 0x1 ///<PStore header1(restore header1 or header1 error)
|
|
#define PS_HEAD2 0x2 ///<PStore header2(restore header2 or header2 error)
|
|
//@}
|
|
|
|
/**
|
|
@name PStore total section range.
|
|
*/
|
|
//@{
|
|
#define PS_MIN_SEC_NUM 4 ///<Minimum section number
|
|
#define PS_MAX_SEC_NUM 256 ///<Maximum section number
|
|
//@}
|
|
|
|
/**
|
|
@name The range of PStore block number per section.
|
|
*/
|
|
//@{
|
|
#define PS_MIN_BLK_NUM_PER_SEC 128 ///<Minimum block per section
|
|
#define PS_MAX_BLK_NUM_PER_SEC 512 ///<Minimum block per section
|
|
//@}
|
|
|
|
#define SEC_NAME_LEN 12 ///<Setcion name maximun length.
|
|
|
|
/**
|
|
@name PStore error code.
|
|
*/
|
|
//@{
|
|
#define E_PS_OK (0) ///< PStore operation correct
|
|
#define E_PS_PAR (-33) ///< Input parameter error (E_PAR)
|
|
#define E_PS_SECHDLER NULL ///< Section handle error,NULL
|
|
#define E_PS_SYS (-5) ///< System error (E_SYS)
|
|
#define E_PS_CHKER (-100) ///< Header of PStore checksum error
|
|
#define E_PS_EMPTY (-101) ///< PStore is empty.All data is 0xFF in storage
|
|
#define E_PS_VERFAIL (-102) ///< The version mismatch
|
|
#define E_PS_SIZE (-103) ///< Input size error
|
|
#define E_PS_DRVFAIL (-104) ///< Device driver init fail
|
|
#define E_PS_PSNOTOPEN (-105) ///< PStore has not opened yet
|
|
#define E_PS_PSOPEN (-106) ///< PStore has opened
|
|
#define E_PS_SECNOTOPEN (-107) ///< Section has not opened yet
|
|
#define E_PS_RDONLY (-108) ///< PStore is opened as read only
|
|
#define E_PS_WRONLY (-109) ///< PStore is opened as write only
|
|
#define E_PS_SECNOTFOUND (-110) ///< Section not found
|
|
#define E_PS_SECNOTCLOSE (-111) ///< Section not close
|
|
#define E_PS_GETRIGHTFAIL (-112) ///< Get access right fail
|
|
#define E_PS_NOSTRGOBJ (-113) ///< Storage object not found
|
|
#define E_PS_NAMEFAIL (-114) ///< PStore Name Error(out of 'A'~'Z')
|
|
#define E_PS_HEADFAIL (-115) ///< PStore header error
|
|
#define E_PS_OPFAIL (-116) ///< PStore operation fail
|
|
#define E_PS_BUF (-117) ///< PStore buffer error
|
|
#define E_PS_SEC_NUM (-118) ///< PStore section number error,out of range (PS_MIN_SEC_NUM ~ PS_MAX_SEC_NUM)
|
|
#define E_PS_TBL (-119) ///< PStore block table not correct
|
|
#define E_PS_PARTITION (-120) ///< Nand partition error,maybe change partition
|
|
#define E_PS_INIT (-121) ///< PStore init fail
|
|
//@}
|
|
|
|
|
|
/**
|
|
PStore header structure.
|
|
*/
|
|
typedef struct _PSTORE
|
|
{
|
|
UINT32 uiSignature; ///<Just for identification.
|
|
UINT32 uiPSVersion; ///<Version of PStore library.
|
|
UINT32 uiSectionNum; ///<How many sections the PStore have.
|
|
UINT32 uiMaxBlkPerSec; ///<Max block per section.
|
|
UINT32 uiPStoreSize; ///<PStore size in byte unit (for NAND flash device, please make sure the PStoreSize that a multiple of block size).
|
|
UINT32 uiPSDrvVersion; ///<Version of stroage driver.
|
|
UINT32 uiCheckSum; ///<Please keep check sum item is the last element of PS structure.
|
|
} PSTORE, *PPSTORE;
|
|
|
|
|
|
/**
|
|
PStore format structure.User can decide total section number and how many block per section
|
|
*/
|
|
typedef struct _PSFMT
|
|
{
|
|
UINT32 uiMaxBlkPerSec; ///<block number per section.This value would decice Maximun size of one section.
|
|
UINT32 uiMaxSec; ///<total section number
|
|
} PSFMT, *PPSFMTE;
|
|
|
|
/**
|
|
PStore init pramater
|
|
*/
|
|
typedef struct _PSTORE_INIT_PARAM
|
|
{
|
|
UINT8 *pBuf; ///<PStoer working buffer address
|
|
UINT32 uiBufSize; ///<PStoer working buffer size.PStore_CaculateBuffer() can get minimum buffer size
|
|
} PSTORE_INIT_PARAM, *PPSTORE_INIT_PARAM;
|
|
|
|
/**
|
|
Section handle structure.
|
|
*/
|
|
typedef struct _PSTORE_SECTION_HANDLE
|
|
{
|
|
char pSectionName[SEC_NAME_LEN]; ///<uiSectionName =0, means a free section handle.
|
|
UINT32 uiSectionID; ///<Section sequence in header.
|
|
UINT32 uiRWOperation; ///<Bit flag of PS_RDONLY, PS_WRONLY, PS_RDWR, PS_CREATE ,PS_UPDATE
|
|
UINT32 uiSectionUpdate; ///<Flag of update header or not.
|
|
UINT32 uiSectionSize; ///<Section size.Byte unit.(not block alignment)
|
|
UINT32 uiHandleID; ///<Handle identification.
|
|
} PSTORE_SECTION_HANDLE, *PPSTORE_SECTION_HANDLE;
|
|
|
|
|
|
/**
|
|
Found section handle structure.
|
|
*/
|
|
typedef struct _PSTORE_SEARCH_HANDLE
|
|
{
|
|
char pSectionName[SEC_NAME_LEN]; ///<Section name ID
|
|
UINT32 uiSectionSize; ///<Section size
|
|
UINT32 uiReadOnly; ///<Section read only
|
|
UINT32 uiDescCheckSum; ///<check sum of descriptor
|
|
} PSTORE_SEARCH_HANDLE, *PPSTORE_SEARCH_HANDLE;
|
|
|
|
/**
|
|
The parameter of PStore_GetInfo()
|
|
*/
|
|
typedef enum _PS_INFO_ID_
|
|
{
|
|
PS_INFO_MAX_SEC = 0, ///<PStore max section ,set from PStore_Format
|
|
PS_INFO_MAX_SEC_SIZE, ///<A section max size(block size * max block per section),set from PStore_Format
|
|
PS_INFO_TOT_SIZE, ///<PStore size,get from storage partitioned physical size
|
|
PS_INFO_FREE_SPACE, ///<PStore free space(block alignment)
|
|
PS_INFO_BLK_SIZE, ///<Storage block size
|
|
ENUM_DUMMY4WORD(PS_INFO_ID)
|
|
} PS_INFO_ID;
|
|
|
|
/**
|
|
The parameter of PStore_EnableUpdateHeader()
|
|
*/
|
|
typedef enum _PS_HEAD_UPDATE_
|
|
{
|
|
PS_UPDATE_ALLHEAD = 1, ///<head 1 and head 2 would update when create and write section
|
|
PS_UPDATE_ONEHEAD, ///<only update header 1,header 2 is read only
|
|
PS_UPDATE_ZEROHEAD, ///<header 1 and header 2 are read only
|
|
ENUM_DUMMY4WORD(PS_HEAD_UPDATE)
|
|
} PS_HEAD_UPDATE;
|
|
|
|
|
|
typedef enum _PS_TYPE
|
|
{
|
|
PS_TYPE_EMBEDED = 0,
|
|
PS_TYPE_FILESYS,
|
|
ENUM_DUMMY4WORD(PS_TYPE)
|
|
} PS_TYPE;
|
|
|
|
|
|
/**
|
|
Calculate PStore buffer size
|
|
|
|
The fomula as below, \n
|
|
1.one block for read/write not block alignment access \n
|
|
2.keep tmp 2 section block table + 1 cTempHeadBuf = 3 PS_SECTION_HEADER_SIZE \n
|
|
3.all section descption \n
|
|
4.buffer check byte:4 \n
|
|
|
|
@param[in] pFmtStruct Format structure for caculate block table size.
|
|
@param[in] blkSize Storage block size.
|
|
|
|
@return Buffer size.
|
|
*/
|
|
extern UINT32 PStore_CalBuffer(PSFMT *pFmtStruct,UINT32 blkSize);
|
|
|
|
/**
|
|
init PStore type
|
|
|
|
init PStore type,user can choose PS_TYPE type
|
|
@param[in] PsType PStore supported type (embeded or file system ).
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_SYS if fail
|
|
|
|
*/
|
|
extern ER PStore_Init(PS_TYPE PsType,CHAR Drive);
|
|
|
|
/**
|
|
Open PStore.
|
|
|
|
This API would initialize storage driver,working buffer and global parmater.
|
|
Need to open PStore before access PStore.
|
|
|
|
@param[in] pStrgObj The pointer of storage object.
|
|
|
|
@param[in] pInitParam The pointer of working buffer address and size.
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_PAR if the input parameters are wrong
|
|
- @b E_PS_SYS if some system settings did not be set, such as PStore_InstallID
|
|
- @b E_PS_CHKER if checksum error
|
|
- @b E_PS_EMPTY if no PStore header.All haeder data is 0xFF
|
|
- @b E_PS_VERFAIL if library or driver version is different from verion in storage
|
|
- @b E_PS_DRVFAIL if init storge driver fail
|
|
- @b E_PS_GETRIGHTFAIL if get access right fail.(last time use PStore_GetAccessRight but not release)
|
|
- @b E_PS_HEADFAIL if found PStore header error
|
|
- @b E_PS_SEC_NUM if section number out of range (PS_MIN_SEC_NUM ~ PS_MAX_SEC_NUM)
|
|
- @b E_PS_PARTITION if NAND partition error
|
|
*/
|
|
extern ER PStore_Open(STORAGE_OBJ *pStrgObj,PSTORE_INIT_PARAM* pInitParam);
|
|
|
|
/**
|
|
Close PStore.
|
|
|
|
This API will check whether there is an opened handle ,so close the section and release handle
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_SYS if fail
|
|
- @b E_PS_CHKER if check sum error
|
|
*/
|
|
extern ER PStore_Close(void);
|
|
|
|
/**
|
|
Open a PStore section.
|
|
|
|
The API opens the section that is specified by section name.
|
|
|
|
@note
|
|
A valid section name consist of four characters or less, but can not be NULL or 0xFFFFFFFF.
|
|
|
|
@param[in] pSecName Section name.
|
|
@param[in] RWOperation Read / write operation.
|
|
PS_RDONLY Read only
|
|
PS_WRONLY Write only
|
|
PS_RDWD Read and write
|
|
PS_CREATE Create a new section when the section not existence.
|
|
PS_UPDATE update exist section data,not change section size and header table
|
|
|
|
@return Section Handle The pointer of section handle.
|
|
- @b E_PS_SECHDLER for open section fail.
|
|
(ex:Section not found,operation error,check name error,section full,check sum error.)
|
|
If section opened,This API would wait until the section closed.
|
|
|
|
*/
|
|
extern PSTORE_SECTION_HANDLE* PStore_OpenSection(char *pSecName, UINT32 RWOperation);
|
|
|
|
/**
|
|
Close a PStore section.
|
|
|
|
The API closes opened handle
|
|
|
|
@param[in] pSectionHandle The Pointer to section handle.
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_PAR if wrong parameter
|
|
- @b E_PS_CHKER if check sum error
|
|
- @b E_PS_SYS if write block error
|
|
*/
|
|
extern ER PStore_CloseSection(PSTORE_SECTION_HANDLE* pSectionHandle);
|
|
|
|
/**
|
|
Delete a PStore section.
|
|
|
|
Delete a PStore section.
|
|
|
|
@param[in] pSecName Section name.
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_SYS if delete fail
|
|
- @b E_PS_SECNOTCLOSE if section opened,please close section first.
|
|
- @b E_PS_SECNOTFOUND if assigned section name not found
|
|
- @b E_PS_PAR if wrong parameter
|
|
*/
|
|
extern ER PStore_DeleteSection(char *pSecName);
|
|
|
|
/**
|
|
Read data from storage of PStore area.
|
|
|
|
Read data from storage of PStore area to buffer.
|
|
|
|
@param[out] pcBuffer The read-in data.
|
|
@param[in] ulStartAddress Data to read from.
|
|
@param[in] ulDataLength How many bytes to read.
|
|
@param[in] pSectionHandle The pointer of section handle
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_PSNOTOPEN if PStore has not opened yet.
|
|
- @b E_PS_PAR if wrong parameter
|
|
- @b E_PS_SECNOTFOUND if section not found.
|
|
- @b E_PS_SECNOTOPEN if the section has not opened yet.
|
|
- @b E_PS_WRONLY if write only
|
|
- @b E_PS_SYS if system error
|
|
|
|
|
|
Example:
|
|
@code
|
|
{
|
|
if ((pSection = PStore_OpenSection(PS_SEC_NAME, PS_RDWR)) != E_PS_SECHDLER)
|
|
{
|
|
PStore_ReadSection((UINT8 *)pBuf, 0, secSize, pSection);
|
|
PStore_CloseSection(pSection);
|
|
}
|
|
}
|
|
@endcode
|
|
*/
|
|
extern ER PStore_ReadSection( UINT8* pcBuffer,UINT32 ulStartAddress, UINT32 ulDataLength, PSTORE_SECTION_HANDLE* pSectionHandle);
|
|
|
|
/**
|
|
Write data to storage of PStore area.
|
|
|
|
Write data to storage of PStore area.
|
|
|
|
@param[in] pcBuffer The pointer to data to be written.
|
|
@param[in] ulStartAddress Start position of data.
|
|
@param[in] ulDataLength How many bytes to write.
|
|
@param[in] pSectionHandle The pointer of section handle.
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_PSNOTOPEN if PStore has not opened yet.
|
|
- @b E_PS_PAR if wrong parameter
|
|
- @b E_PS_SECNOTFOUND if section not found.
|
|
- @b E_PS_SECNOTOPEN if the section has not opened yet.
|
|
- @b E_PS_RDONLY if read only
|
|
- @b E_PS_SYS if system error
|
|
|
|
Example:
|
|
@code
|
|
{
|
|
if ((pSection = PStore_OpenSection(PS_SEC_NAME, PS_RDWR | PS_CREATE)) != E_PS_SECHDLER)
|
|
{
|
|
PStore_WriteSection((UINT8 *)pBuf, 0, secSize, pSection);
|
|
PStore_CloseSection(pSection);
|
|
}
|
|
}
|
|
@endcode
|
|
*/
|
|
extern ER PStore_WriteSection(UINT8* pcBuffer, UINT32 ulStartAddress, UINT32 ulDataLength, PSTORE_SECTION_HANDLE* pSectionHandle);
|
|
|
|
/**
|
|
Format PStore.
|
|
|
|
Erase all data in PStore area,then fill PStore header parameter to PStore area.
|
|
|
|
@param[in] pFmtStruct Format structure.Assign block number per section and total block.
|
|
|
|
@return
|
|
- @b E_PS_OK if success.
|
|
- @b E_PS_SYS if failure.
|
|
- @b E_PS_PAR if parameter error.
|
|
- @b E_PS_SIZE if buffer size error.
|
|
|
|
|
|
*/
|
|
extern ER PStore_Format(PSFMT *pFmtStruct);
|
|
|
|
/**
|
|
Get PStore information.
|
|
|
|
Get PStore information.
|
|
|
|
@param[in] infoId To specify which information ID.
|
|
|
|
@return Information data.
|
|
*/
|
|
extern UINT32 PStore_GetInfo(PS_INFO_ID infoId);
|
|
|
|
/**
|
|
Open for search PStore section.
|
|
|
|
Open for search PStore section.
|
|
|
|
@param[out] pFindData return found section handle.
|
|
|
|
@return
|
|
- @b TRUE continue to search next by PStore_SearchSection()
|
|
- @b FALSE search to end.Use PStore_SearchSectionClose() to close search
|
|
|
|
Example:
|
|
@code
|
|
{
|
|
UINT32 bNext = FALSE;
|
|
PSTORE_SEARCH_HANDLE SearchHandle;
|
|
|
|
bNext = PStore_SearchSectionOpen(&SearchHandle);
|
|
while(bNext)
|
|
{
|
|
DBG_DUMP("%15s 0x%08x %d 0x%08x\r\n", SearchHandle.pSectionName,SearchHandle.uiSectionSize,SearchHandle.uiReadOnly,SearchHandle.uiDescCheckSum);
|
|
bNext = PStore_SearchSection(&SearchHandle);
|
|
}
|
|
|
|
PStore_SearchSectionClose();
|
|
|
|
return TRUE;
|
|
}
|
|
@endcode
|
|
*/
|
|
extern BOOL PStore_SearchSectionOpen(PSTORE_SEARCH_HANDLE *pFindData);
|
|
|
|
/**
|
|
Search PStore section.
|
|
|
|
Search PStore section.
|
|
|
|
@param[out] pFindData return found section handle.
|
|
|
|
@return
|
|
- @b TRUE continue to search next by PStore_SearchSection()
|
|
- @b FALSE search to end.Use PStore_SearchSectionClose() to close the search.
|
|
|
|
*/
|
|
extern BOOL PStore_SearchSection(PSTORE_SEARCH_HANDLE *pFindData);
|
|
|
|
/**
|
|
Rewind PStore search section.
|
|
|
|
Rewind the PStore search section to the beginning.
|
|
|
|
@return
|
|
- @b TRUE Rewind operation succeed.
|
|
- @b FALSE Fail to rewind. Use PStore_SearchSectionClose() to close the search.
|
|
*/
|
|
extern BOOL PStore_SearchSectionRewind(void);
|
|
|
|
/**
|
|
Close search PStore section.
|
|
|
|
Close search PStore section.
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_SYS if fail
|
|
*/
|
|
extern ER PStore_SearchSectionClose(void);
|
|
|
|
/**
|
|
Dump PSTORE structure and exist PSTORE_SECTION_DESC and PSTORE_SECTION_HANDLE
|
|
*/
|
|
extern void PStore_DumpPStoreInfo(void);
|
|
|
|
/**
|
|
Dump PStore data to file system.
|
|
|
|
The dump data including header,block table and section data.
|
|
|
|
@param[in] pBuf Working buffer for dump.
|
|
@param[in] uiBufSize Working buffer size.
|
|
|
|
@return void.
|
|
|
|
*/
|
|
extern void PStore_Dump(UINT8 *pBuf,UINT32 uiBufSize);
|
|
|
|
/**
|
|
Check assigned section block table.
|
|
|
|
Check PStore block table first block number is empty (0xFF) or invalid value
|
|
|
|
@param[in] pSecName Secton name.
|
|
@param[out] ErrorSection Return Section Error.
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_SYS if fail
|
|
- @b E_PS_HEADFAIL if check header error
|
|
*/
|
|
extern ER PStore_CheckSection(char *pSecName,UINT32* ErrorSection);
|
|
|
|
/**
|
|
Check total section block table.
|
|
|
|
Check exist PStore block table first block number is empty (0xFF) or invalid value
|
|
|
|
@param[out] ErrorSection Return Section header error.
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_SYS if fail
|
|
- @b E_PS_HEADFAIL if check header error
|
|
*/
|
|
extern ER PStore_CheckTotalSection(UINT32* ErrorSection);
|
|
|
|
/**
|
|
Enable update header.
|
|
|
|
User can decide update which header.
|
|
this API ,PStore_CheckTotalSection and PStore_RestoreHeader can use together.
|
|
|
|
@param[in] Header Update Header type(refer to PS_HEAD_UPDATE).
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_SYS if fail
|
|
|
|
Example:
|
|
@code
|
|
{
|
|
PStore_EnableUpdateHeader(PS_UPDATE_ONEHEAD); //only update header 1,header 2 would not be update
|
|
PStore_CheckTotalSection(&ErrorSection);
|
|
if(ErrorSection==PS_HEAD1)
|
|
PStore_RestoreHeader((UINT8 *)pBuf,PS_HEAD1);
|
|
}
|
|
@endcode
|
|
|
|
*/
|
|
extern ER PStore_EnableUpdateHeader(PS_HEAD_UPDATE Header);
|
|
|
|
/**
|
|
Restore PStore header.
|
|
|
|
Restore from good header to bad header.There are only 2 header,if choose PS_HEAD1,
|
|
it would read header2 data and write to header1
|
|
|
|
@param[in] pBuf Working buffer.
|
|
@param[in] RestoreType Restore header1 or header2.
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_SYS if fail
|
|
- @b E_PS_PAR if pamameter error
|
|
|
|
Example:
|
|
@code
|
|
{
|
|
PStore_CheckTotalSection(&ErrorSection);
|
|
if(ErrorSection==PS_HEAD1)
|
|
PStore_RestoreHeader((UINT8 *)pBuf,PS_HEAD1);
|
|
}
|
|
@endcode
|
|
|
|
*/
|
|
extern ER PStore_RestoreHeader(UINT8 *pBuf , UINT32 RestoreType);
|
|
|
|
/**
|
|
Set single section read only.
|
|
|
|
Set single section read only.
|
|
|
|
@note
|
|
The API would update PStore header,and write to stoarge.
|
|
The attribute would exist after the reboot.
|
|
|
|
@param[in] pSecName Section name.
|
|
@param[in] Enable TRUE or FALSE.
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_SYS if fail
|
|
- @b E_PS_PAR if pamameter error
|
|
*/
|
|
extern ER PStore_ReadOnly(char *pSecName, BOOL Enable);
|
|
|
|
/**
|
|
Set exist section read only
|
|
|
|
Set exist section read only.
|
|
|
|
@note
|
|
The API would update PStore header,and write to stoarge.
|
|
The attribute would exist after the reboot.
|
|
|
|
@param[in] Enable TRUE or FALSE
|
|
|
|
@return
|
|
- @b E_PS_OK if success
|
|
- @b E_PS_SYS if fail
|
|
*/
|
|
extern ER PStore_ReadOnlyAll(BOOL Enable);
|
|
|
|
/**
|
|
Enable/Disable check data after write section.
|
|
|
|
If enable,write section would read data to temp buffer and compare with write data evey time.
|
|
|
|
@note
|
|
The performance of write section would be affected.
|
|
|
|
@param[in] Enable enable/disable function.
|
|
|
|
@return void
|
|
*/
|
|
extern void PStore_EnableCheckData(BOOL Enable);
|
|
|
|
/**
|
|
Check storage version to determine if format is needed.
|
|
|
|
If Version is different from the value stored in storage PStore_Open() will fail and project should then call PStore_Format().
|
|
|
|
@param[in] Version project's specific version.
|
|
|
|
@return void
|
|
*/
|
|
extern void PStore_SetPrjVersion(UINT32 Version);
|
|
|
|
#endif // _PSTORE_H
|
|
|
|
//@}
|