37 #include "simplelink.h"
48 #define SL_FS_ERR_EMPTY_SFLASH (-67)
49 #define SL_FS_ERR_FILE_IS_NOT_SECURE_AND_SIGN (-66)
50 #define SL_FS_ERASING_FLASH (-65)
51 #define SL_FS_FILE_HAS_NOT_BEEN_CLOSE_CORRECTLY (-64)
52 #define SL_FS_WRONG_SIGNATURE (-63)
53 #define SL_FS_WRONG_SIGNATURE_OR_CERTIFIC_NAME_LENGTH (-62)
54 #define SL_FS_NOT_16_ALIGNED (-61)
55 #define SL_FS_CERT_CHAIN_ERROR (-60)
56 #define SL_FS_FILE_NAME_EXIST (-59)
57 #define SL_FS_SECURITY_BUF_ALREADY_ALLOC (-58)
58 #define SL_FS_SECURE_FILE_MUST_BE_COMMIT (-57)
59 #define SL_FS_ERR_INCORRECT_OFFSET_ALIGNMENT (-56)
60 #define SL_FS_ERR_FAILED_READ_NVMEM_HEADER (-55)
61 #define SL_FS_WRONG_FILE_NAME (-54)
62 #define SL_FS_FILE_SYSTEM_IS_LOCKED (-53)
63 #define SL_FS_SECURITY_ALLERT (-52)
64 #define SL_FS_FILE_UNVALID_FILE_SIZE (-51)
65 #define SL_FS_ERR_TOKEN_IS_NOT_VALID (-50)
66 #define SL_FS_NO_DEVICE_IS_LOADED (-49)
67 #define SL_FS_DATA_ADDRESS_SHOUD_BE_IN_DATA_RAM (-48)
68 #define SL_FS_DATA_IS_NOT_ALIGNED (-47)
69 #define SL_FS_ERR_OVERLAP_DETECTION_THRESHHOLD (-46)
70 #define SL_FS_FILE_HAS_RESERVED_NV_INDEX (-45)
71 #define SL_FS_ERR_MAX_FS_FILES_IS_LARGER (-44)
72 #define SL_FS_ERR_MAX_FS_FILES_IS_SMALLER (-43)
73 #define SL_FS_FILE_MAX_SIZE_EXCEEDED (-42)
74 #define SL_FS_INVALID_BUFFER_FOR_READ (-41)
75 #define SL_FS_INVALID_BUFFER_FOR_WRITE (-40)
76 #define SL_FS_ERR_FILE_IMAGE_IS_CORRUPTED (-39)
77 #define SL_FS_ERR_SIZE_OF_FILE_EXT_EXCEEDED (-38)
78 #define SL_FS_WARNING_FILE_NAME_NOT_KEPT (-37)
79 #define SL_FS_ERR_DEVICE_IS_NOT_FORMATTED (-36)
80 #define SL_FS_ERR_FAILED_WRITE_NVMEM_HEADER (-35)
81 #define SL_FS_ERR_NO_AVAILABLE_NV_INDEX (-34)
82 #define SL_FS_ERR_FAILED_TO_ALLOCATE_MEM (-33)
83 #define SL_FS_ERR_FAILED_TO_READ_INTEGRITY_HEADER_2 (-32)
84 #define SL_FS_ERR_FAILED_TO_READ_INTEGRITY_HEADER_1 (-31)
85 #define SL_FS_ERR_NO_AVAILABLE_BLOCKS (-30)
86 #define SL_FS_ERR_FILE_WRITTEN_MAX_SIZE_IS_BIGGER_THAN_THE_EXISTING_FILE (-29)
87 #define SL_FS_ERR_FILE_EXISTS_ON_DIFFERENT_DEVICE_ID (-28)
88 #define SL_FS_ERR_INVALID_ACCESS_TYPE (-27)
89 #define SL_FS_ERR_FILE_ALREADY_EXISTS (-26)
90 #define SL_FS_PROGRAM_ERR (-25)
91 #define SL_FS_ERROR_NO_ENTRIES_AVAILABLE (-24)
92 #define SL_FS_ERR_FILE_ACCESS_IS_DIFFERENT (-23)
93 #define SL_FS_ERROR_BAD_FILE_MODE (-22)
94 #define SL_FS_ERROR_FAILED_READ_NVFILE (-21)
95 #define SL_FS_ERROR_FAILED_INIT_STORAGE (-20)
96 #define SL_FS_ERROR_CONTINUE_WRITE_MUST_BE_MOD_4 (-19)
97 #define SL_FS_ERROR_FAILED_LOAD_FILE (-18)
98 #define SL_FS_ERROR_INVALID_HANDLE (-17)
99 #define SL_FS_ERROR_FAILED_TO_WRITE (-16)
100 #define SL_FS_ERROR_OFFSET_OUT_OF_RANGE (-15)
101 #define SL_FS_ERR_ALLOC (-14)
102 #define SL_FS_ERR_READ_DATA_LENGTH (-13)
103 #define SL_FS_ERR_INVALID_FILE_ID (-12)
104 #define SL_FS_ERR_FILE_NOT_EXISTS (-11)
105 #define SL_FS_ERR_EMPTY_ERROR (-10)
106 #define SL_FS_ERR_INVALID_ARGS (-9)
107 #define SL_FS_ERR_FAILED_TO_CREATE_FILE (-8)
108 #define SL_FS_ERR_FS_ALREADY_LOADED (-7)
109 #define SL_FS_ERR_UNKNOWN (-6)
110 #define SL_FS_ERR_FAILED_TO_CREATE_LOCK_OBJ (-5)
111 #define SL_FS_ERR_DEVICE_NOT_LOADED (-4)
112 #define SL_FS_ERR_INVALID_MAGIC_NUM (-3)
113 #define SL_FS_ERR_FAILED_TO_READ (-2)
114 #define SL_FS_ERR_NOT_SUPPORTED (-1)
121 unsigned short flags;
122 unsigned long FileLen;
123 unsigned long AllocatedLen;
124 unsigned long Token[4];
130 _FS_MODE_OPEN_READ = 0,
132 _FS_MODE_OPEN_CREATE,
133 _FS_MODE_OPEN_WRITE_CREATE_IF_NOT_EXIST
134 }SlFsFileOpenAccessType_e;
139 _FS_FILE_OPEN_FLAG_COMMIT = 0x1,
140 _FS_FILE_OPEN_FLAG_SECURE = 0x2,
141 _FS_FILE_OPEN_FLAG_NO_SIGNATURE_TEST = 0x4,
142 _FS_FILE_OPEN_FLAG_STATIC = 0x8,
143 _FS_FILE_OPEN_FLAG_VENDOR = 0x10,
144 _FS_FILE_PUBLIC_WRITE= 0x20,
145 _FS_FILE_PUBLIC_READ = 0x40
151 _FS_MODE_SIZE_GRAN_256B = 0,
152 _FS_MODE_SIZE_GRAN_1KB,
153 _FS_MODE_SIZE_GRAN_4KB,
154 _FS_MODE_SIZE_GRAN_16KB,
155 _FS_MODE_SIZE_GRAN_64KB,
156 _FS_MAX_MODE_SIZE_GRAN
157 }_SlFsFileOpenMaxSizeGran_e;
159 #define _FS_MODE_ACCESS_RESERVED_OFFSET 24
160 #define _FS_MODE_ACCESS_RESERVED_MASK 0xFF
161 #define _FS_MODE_ACCESS_FLAGS_OFFSET 16
162 #define _FS_MODE_ACCESS_FLAGS_MASK 0xFF
163 #define _FS_MODE_ACCESS_OFFSET 12
164 #define _FS_MODE_ACCESS_MASK 0xF
165 #define _FS_MODE_OPEN_SIZE_GRAN_OFFSET 8
166 #define _FS_MODE_OPEN_SIZE_GRAN_MASK 0xF
167 #define _FS_MODE_OPEN_SIZE_OFFSET 0
168 #define _FS_MODE_OPEN_SIZE_MASK 0xFF
170 #define MAX_MODE_SIZE 0xFF
173 unsigned long _GetCreateFsMode(
unsigned long maxSizeInBytes,
unsigned long accessFlags);
174 #define _FS_MODE(Access, SizeGran, Size,Flags) (unsigned long)((((Access) & _FS_MODE_ACCESS_MASK)<<_FS_MODE_ACCESS_OFFSET) | (((SizeGran) & _FS_MODE_OPEN_SIZE_GRAN_MASK)<<_FS_MODE_OPEN_SIZE_GRAN_OFFSET) | (((Size) & _FS_MODE_OPEN_SIZE_MASK)<<_FS_MODE_OPEN_SIZE_OFFSET) | (((Flags) & _FS_MODE_ACCESS_FLAGS_MASK)<<_FS_MODE_ACCESS_FLAGS_OFFSET))
179 #define FS_MODE_OPEN_READ _FS_MODE(_FS_MODE_OPEN_READ,0,0,0)
181 #define FS_MODE_OPEN_WRITE _FS_MODE(_FS_MODE_OPEN_WRITE,0,0,0)
183 #define FS_MODE_OPEN_CREATE(maxSizeInBytes,accessModeFlags) _GetCreateFsMode(maxSizeInBytes,accessModeFlags)
221 #if _SL_INCLUDE_FUNC(sl_FsOpen)
222 long sl_FsOpen(
unsigned char *pFileName,
unsigned long AccessModeAndMaxSize,
unsigned long *pToken,
long *pFileHandle);
241 #if _SL_INCLUDE_FUNC(sl_FsClose)
242 int sl_FsClose(
long FileHdl,
unsigned char* pCeritificateFileName,
unsigned char* pSignature ,
unsigned long SignatureLen);
263 #if _SL_INCLUDE_FUNC(sl_FsRead)
264 long sl_FsRead(
long FileHdl,
unsigned long Offset,
unsigned char* pData,
unsigned long Len);
285 #if _SL_INCLUDE_FUNC(sl_FsWrite)
286 long sl_FsWrite(
long FileHdl,
unsigned long Offset,
unsigned char* pData,
unsigned long Len);
306 #if _SL_INCLUDE_FUNC(sl_FsGetInfo)
325 #if _SL_INCLUDE_FUNC(sl_FsDel)
326 int sl_FsDel(
unsigned char *pFileName,
unsigned long Token);
long sl_FsRead(long FileHdl, unsigned long Offset, unsigned char *pData, unsigned long Len)
read block of data from a file in storage device
long sl_FsWrite(long FileHdl, unsigned long Offset, unsigned char *pData, unsigned long Len)
write block of data to a file in storage device
int sl_FsClose(long FileHdl, unsigned char *pCeritificateFileName, unsigned char *pSignature, unsigned long SignatureLen)
close file in storage device
int sl_FsGetInfo(unsigned char *pFileName, unsigned long Token, SlFsFileInfo_t *pFsFileInfo)
get info on a file
int sl_FsDel(unsigned char *pFileName, unsigned long Token)
delete specific file from a storage or all files from a storage (format)
long sl_FsOpen(unsigned char *pFileName, unsigned long AccessModeAndMaxSize, unsigned long *pToken, long *pFileHandle)
open file for read or write from/to storage device