David Fletcher
/
cc3100_test
TI's CC3100 host driver and demo. Experimental and a work in progress.
simplelink/cc3100_fs.h@2:a3e52cf86086, 2014-11-19 (annotated)
- Committer:
- dflet
- Date:
- Wed Nov 19 23:04:04 2014 +0000
- Revision:
- 2:a3e52cf86086
- Parent:
- 0:bbe98578d4c0
Added more boards!
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dflet | 0:bbe98578d4c0 | 1 | /* |
dflet | 0:bbe98578d4c0 | 2 | * fs.h - CC31xx/CC32xx Host Driver Implementation |
dflet | 0:bbe98578d4c0 | 3 | * |
dflet | 0:bbe98578d4c0 | 4 | * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ |
dflet | 0:bbe98578d4c0 | 5 | * |
dflet | 0:bbe98578d4c0 | 6 | * |
dflet | 0:bbe98578d4c0 | 7 | * Redistribution and use in source and binary forms, with or without |
dflet | 0:bbe98578d4c0 | 8 | * modification, are permitted provided that the following conditions |
dflet | 0:bbe98578d4c0 | 9 | * are met: |
dflet | 0:bbe98578d4c0 | 10 | * |
dflet | 0:bbe98578d4c0 | 11 | * Redistributions of source code must retain the above copyright |
dflet | 0:bbe98578d4c0 | 12 | * notice, this list of conditions and the following disclaimer. |
dflet | 0:bbe98578d4c0 | 13 | * |
dflet | 0:bbe98578d4c0 | 14 | * Redistributions in binary form must reproduce the above copyright |
dflet | 0:bbe98578d4c0 | 15 | * notice, this list of conditions and the following disclaimer in the |
dflet | 0:bbe98578d4c0 | 16 | * documentation and/or other materials provided with the |
dflet | 0:bbe98578d4c0 | 17 | * distribution. |
dflet | 0:bbe98578d4c0 | 18 | * |
dflet | 0:bbe98578d4c0 | 19 | * Neither the name of Texas Instruments Incorporated nor the names of |
dflet | 0:bbe98578d4c0 | 20 | * its contributors may be used to endorse or promote products derived |
dflet | 0:bbe98578d4c0 | 21 | * from this software without specific prior written permission. |
dflet | 0:bbe98578d4c0 | 22 | * |
dflet | 0:bbe98578d4c0 | 23 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
dflet | 0:bbe98578d4c0 | 24 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
dflet | 0:bbe98578d4c0 | 25 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
dflet | 0:bbe98578d4c0 | 26 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
dflet | 0:bbe98578d4c0 | 27 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
dflet | 0:bbe98578d4c0 | 28 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
dflet | 0:bbe98578d4c0 | 29 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
dflet | 0:bbe98578d4c0 | 30 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
dflet | 0:bbe98578d4c0 | 31 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
dflet | 0:bbe98578d4c0 | 32 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
dflet | 0:bbe98578d4c0 | 33 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
dflet | 0:bbe98578d4c0 | 34 | * |
dflet | 0:bbe98578d4c0 | 35 | */ |
dflet | 0:bbe98578d4c0 | 36 | |
dflet | 0:bbe98578d4c0 | 37 | #ifndef __FS_H__ |
dflet | 0:bbe98578d4c0 | 38 | #define __FS_H__ |
dflet | 0:bbe98578d4c0 | 39 | |
dflet | 0:bbe98578d4c0 | 40 | /*****************************************************************************/ |
dflet | 0:bbe98578d4c0 | 41 | /* Include files */ |
dflet | 0:bbe98578d4c0 | 42 | /*****************************************************************************/ |
dflet | 0:bbe98578d4c0 | 43 | |
dflet | 0:bbe98578d4c0 | 44 | #include "cc3100_simplelink.h" |
dflet | 0:bbe98578d4c0 | 45 | |
dflet | 0:bbe98578d4c0 | 46 | #ifdef __cplusplus |
dflet | 0:bbe98578d4c0 | 47 | extern "C" { |
dflet | 0:bbe98578d4c0 | 48 | #endif |
dflet | 0:bbe98578d4c0 | 49 | |
dflet | 0:bbe98578d4c0 | 50 | /*! |
dflet | 0:bbe98578d4c0 | 51 | |
dflet | 0:bbe98578d4c0 | 52 | \addtogroup FileSystem |
dflet | 0:bbe98578d4c0 | 53 | @{ |
dflet | 0:bbe98578d4c0 | 54 | |
dflet | 0:bbe98578d4c0 | 55 | */ |
dflet | 0:bbe98578d4c0 | 56 | |
dflet | 0:bbe98578d4c0 | 57 | /*****************************************************************************/ |
dflet | 0:bbe98578d4c0 | 58 | /* Macro declarations */ |
dflet | 0:bbe98578d4c0 | 59 | /*****************************************************************************/ |
dflet | 0:bbe98578d4c0 | 60 | |
dflet | 0:bbe98578d4c0 | 61 | /* FS error codes */ |
dflet | 0:bbe98578d4c0 | 62 | #define SL_FS_OK (0) |
dflet | 0:bbe98578d4c0 | 63 | #define SL_FS_ERR_EMPTY_SFLASH (-67) |
dflet | 0:bbe98578d4c0 | 64 | #define SL_FS_ERR_FILE_IS_NOT_SECURE_AND_SIGN (-66) |
dflet | 0:bbe98578d4c0 | 65 | #define SL_FS_ERASING_FLASH (-65) |
dflet | 0:bbe98578d4c0 | 66 | #define SL_FS_FILE_HAS_NOT_BEEN_CLOSE_CORRECTLY (-64) |
dflet | 0:bbe98578d4c0 | 67 | #define SL_FS_WRONG_SIGNATURE (-63) |
dflet | 0:bbe98578d4c0 | 68 | #define SL_FS_WRONG_SIGNATURE_OR_CERTIFIC_NAME_LENGTH (-62) |
dflet | 0:bbe98578d4c0 | 69 | #define SL_FS_NOT_16_ALIGNED (-61) |
dflet | 0:bbe98578d4c0 | 70 | #define SL_FS_CERT_CHAIN_ERROR (-60) |
dflet | 0:bbe98578d4c0 | 71 | #define SL_FS_FILE_NAME_EXIST (-59) |
dflet | 0:bbe98578d4c0 | 72 | #define SL_FS_SECURITY_BUF_ALREADY_ALLOC (-58) |
dflet | 0:bbe98578d4c0 | 73 | #define SL_FS_SECURE_FILE_MUST_BE_COMMIT (-57) |
dflet | 0:bbe98578d4c0 | 74 | #define SL_FS_ERR_INCORRECT_OFFSET_ALIGNMENT (-56) |
dflet | 0:bbe98578d4c0 | 75 | #define SL_FS_ERR_FAILED_READ_NVMEM_HEADER (-55) |
dflet | 0:bbe98578d4c0 | 76 | #define SL_FS_WRONG_FILE_NAME (-54) |
dflet | 0:bbe98578d4c0 | 77 | #define SL_FS_FILE_SYSTEM_IS_LOCKED (-53) |
dflet | 0:bbe98578d4c0 | 78 | #define SL_FS_SECURITY_ALLERT (-52) |
dflet | 0:bbe98578d4c0 | 79 | #define SL_FS_FILE_UNVALID_FILE_SIZE (-51) |
dflet | 0:bbe98578d4c0 | 80 | #define SL_FS_ERR_TOKEN_IS_NOT_VALID (-50) |
dflet | 0:bbe98578d4c0 | 81 | #define SL_FS_NO_DEVICE_IS_LOADED (-49) |
dflet | 0:bbe98578d4c0 | 82 | #define SL_FS_DATA_ADDRESS_SHOUD_BE_IN_DATA_RAM (-48) |
dflet | 0:bbe98578d4c0 | 83 | #define SL_FS_DATA_IS_NOT_ALIGNED (-47) |
dflet | 0:bbe98578d4c0 | 84 | #define SL_FS_ERR_OVERLAP_DETECTION_THRESHHOLD (-46) |
dflet | 0:bbe98578d4c0 | 85 | #define SL_FS_FILE_HAS_RESERVED_NV_INDEX (-45) |
dflet | 0:bbe98578d4c0 | 86 | #define SL_FS_ERR_MAX_FS_FILES_IS_LARGER (-44) |
dflet | 0:bbe98578d4c0 | 87 | #define SL_FS_ERR_MAX_FS_FILES_IS_SMALLER (-43) |
dflet | 0:bbe98578d4c0 | 88 | #define SL_FS_FILE_MAX_SIZE_EXCEEDED (-42) |
dflet | 0:bbe98578d4c0 | 89 | #define SL_FS_INVALID_BUFFER_FOR_READ (-41) |
dflet | 0:bbe98578d4c0 | 90 | #define SL_FS_INVALID_BUFFER_FOR_WRITE (-40) |
dflet | 0:bbe98578d4c0 | 91 | #define SL_FS_ERR_FILE_IMAGE_IS_CORRUPTED (-39) |
dflet | 0:bbe98578d4c0 | 92 | #define SL_FS_ERR_SIZE_OF_FILE_EXT_EXCEEDED (-38) |
dflet | 0:bbe98578d4c0 | 93 | #define SL_FS_WARNING_FILE_NAME_NOT_KEPT (-37) |
dflet | 0:bbe98578d4c0 | 94 | #define SL_FS_ERR_DEVICE_IS_NOT_FORMATTED (-36) |
dflet | 0:bbe98578d4c0 | 95 | #define SL_FS_ERR_FAILED_WRITE_NVMEM_HEADER (-35) |
dflet | 0:bbe98578d4c0 | 96 | #define SL_FS_ERR_NO_AVAILABLE_NV_INDEX (-34) |
dflet | 0:bbe98578d4c0 | 97 | #define SL_FS_ERR_FAILED_TO_ALLOCATE_MEM (-33) |
dflet | 0:bbe98578d4c0 | 98 | #define SL_FS_ERR_FAILED_TO_READ_INTEGRITY_HEADER_2 (-32) |
dflet | 0:bbe98578d4c0 | 99 | #define SL_FS_ERR_FAILED_TO_READ_INTEGRITY_HEADER_1 (-31) |
dflet | 0:bbe98578d4c0 | 100 | #define SL_FS_ERR_NO_AVAILABLE_BLOCKS (-30) |
dflet | 0:bbe98578d4c0 | 101 | #define SL_FS_ERR_FILE_MAX_SIZE_BIGGER_THAN_EXISTING_FILE (-29) |
dflet | 0:bbe98578d4c0 | 102 | #define SL_FS_ERR_FILE_EXISTS_ON_DIFFERENT_DEVICE_ID (-28) |
dflet | 0:bbe98578d4c0 | 103 | #define SL_FS_ERR_INVALID_ACCESS_TYPE (-27) |
dflet | 0:bbe98578d4c0 | 104 | #define SL_FS_ERR_FILE_ALREADY_EXISTS (-26) |
dflet | 0:bbe98578d4c0 | 105 | #define SL_FS_ERR_PROGRAM (-25) |
dflet | 0:bbe98578d4c0 | 106 | #define SL_FS_ERR_NO_ENTRIES_AVAILABLE (-24) |
dflet | 0:bbe98578d4c0 | 107 | #define SL_FS_ERR_FILE_ACCESS_IS_DIFFERENT (-23) |
dflet | 0:bbe98578d4c0 | 108 | #define SL_FS_ERR_BAD_FILE_MODE (-22) |
dflet | 0:bbe98578d4c0 | 109 | #define SL_FS_ERR_FAILED_READ_NVFILE (-21) |
dflet | 0:bbe98578d4c0 | 110 | #define SL_FS_ERR_FAILED_INIT_STORAGE (-20) |
dflet | 0:bbe98578d4c0 | 111 | #define SL_FS_ERR_CONTINUE_WRITE_MUST_BE_MOD_4 (-19) |
dflet | 0:bbe98578d4c0 | 112 | #define SL_FS_ERR_FAILED_LOAD_FILE (-18) |
dflet | 0:bbe98578d4c0 | 113 | #define SL_FS_ERR_INVALID_HANDLE (-17) |
dflet | 0:bbe98578d4c0 | 114 | #define SL_FS_ERR_FAILED_TO_WRITE (-16) |
dflet | 0:bbe98578d4c0 | 115 | #define SL_FS_ERR_OFFSET_OUT_OF_RANGE (-15) |
dflet | 0:bbe98578d4c0 | 116 | #define SL_FS_ERR_ALLOC (-14) |
dflet | 0:bbe98578d4c0 | 117 | #define SL_FS_ERR_READ_DATA_LENGTH (-13) |
dflet | 0:bbe98578d4c0 | 118 | #define SL_FS_ERR_INVALID_FILE_ID (-12) |
dflet | 0:bbe98578d4c0 | 119 | #define SL_FS_ERR_FILE_NOT_EXISTS (-11) |
dflet | 0:bbe98578d4c0 | 120 | #define SL_FS_ERR_EMPTY_ERROR (-10) |
dflet | 0:bbe98578d4c0 | 121 | #define SL_FS_ERR_INVALID_ARGS (-9) |
dflet | 0:bbe98578d4c0 | 122 | #define SL_FS_ERR_FAILED_TO_CREATE_FILE (-8) |
dflet | 0:bbe98578d4c0 | 123 | #define SL_FS_ERR_FS_ALREADY_LOADED (-7) |
dflet | 0:bbe98578d4c0 | 124 | #define SL_FS_ERR_UNKNOWN (-6) |
dflet | 0:bbe98578d4c0 | 125 | #define SL_FS_ERR_FAILED_TO_CREATE_LOCK_OBJ (-5) |
dflet | 0:bbe98578d4c0 | 126 | #define SL_FS_ERR_DEVICE_NOT_LOADED (-4) |
dflet | 0:bbe98578d4c0 | 127 | #define SL_FS_ERR_INVALID_MAGIC_NUM (-3) |
dflet | 0:bbe98578d4c0 | 128 | #define SL_FS_ERR_FAILED_TO_READ (-2) |
dflet | 0:bbe98578d4c0 | 129 | #define SL_FS_ERR_NOT_SUPPORTED (-1) |
dflet | 0:bbe98578d4c0 | 130 | /* end of error codes */ |
dflet | 0:bbe98578d4c0 | 131 | |
dflet | 0:bbe98578d4c0 | 132 | #define _FS_MODE_ACCESS_RESERVED_OFFSET (24) |
dflet | 0:bbe98578d4c0 | 133 | #define _FS_MODE_ACCESS_RESERVED_MASK (0xFF) |
dflet | 0:bbe98578d4c0 | 134 | #define _FS_MODE_ACCESS_FLAGS_OFFSET (16) |
dflet | 0:bbe98578d4c0 | 135 | #define _FS_MODE_ACCESS_FLAGS_MASK (0xFF) |
dflet | 0:bbe98578d4c0 | 136 | #define _FS_MODE_ACCESS_OFFSET (12) |
dflet | 0:bbe98578d4c0 | 137 | #define _FS_MODE_ACCESS_MASK (0xF) |
dflet | 0:bbe98578d4c0 | 138 | #define _FS_MODE_OPEN_SIZE_GRAN_OFFSET (8) |
dflet | 0:bbe98578d4c0 | 139 | #define _FS_MODE_OPEN_SIZE_GRAN_MASK (0xF) |
dflet | 0:bbe98578d4c0 | 140 | #define _FS_MODE_OPEN_SIZE_OFFSET (0) |
dflet | 0:bbe98578d4c0 | 141 | #define _FS_MODE_OPEN_SIZE_MASK (0xFF) |
dflet | 0:bbe98578d4c0 | 142 | #define MAX_MODE_SIZE (0xFF) |
dflet | 0:bbe98578d4c0 | 143 | #define _FS_MODE(Access, SizeGran, Size,Flags) (_u32)(((_u32)((Access) & _FS_MODE_ACCESS_MASK)<<_FS_MODE_ACCESS_OFFSET) | \ |
dflet | 0:bbe98578d4c0 | 144 | ((_u32)((SizeGran) & _FS_MODE_OPEN_SIZE_GRAN_MASK)<<_FS_MODE_OPEN_SIZE_GRAN_OFFSET) | \ |
dflet | 0:bbe98578d4c0 | 145 | ((_u32)((Size) & _FS_MODE_OPEN_SIZE_MASK)<<_FS_MODE_OPEN_SIZE_OFFSET) | \ |
dflet | 0:bbe98578d4c0 | 146 | ((_u32)((Flags) & _FS_MODE_ACCESS_FLAGS_MASK)<<_FS_MODE_ACCESS_FLAGS_OFFSET)) |
dflet | 0:bbe98578d4c0 | 147 | |
dflet | 0:bbe98578d4c0 | 148 | |
dflet | 0:bbe98578d4c0 | 149 | /* sl_FsOpen options */ |
dflet | 0:bbe98578d4c0 | 150 | /* Open for Read */ |
dflet | 0:bbe98578d4c0 | 151 | #define FS_MODE_OPEN_READ _FS_MODE(_FS_MODE_OPEN_READ,0,0,0) |
dflet | 0:bbe98578d4c0 | 152 | /* Open for Write (in case file exist) */ |
dflet | 0:bbe98578d4c0 | 153 | #define FS_MODE_OPEN_WRITE _FS_MODE(_FS_MODE_OPEN_WRITE,0,0,0) |
dflet | 0:bbe98578d4c0 | 154 | /* Open for Creating a new file */ |
dflet | 0:bbe98578d4c0 | 155 | #define FS_MODE_OPEN_CREATE(maxSizeInBytes,accessModeFlags) _sl_GetCreateFsMode(maxSizeInBytes,accessModeFlags) |
dflet | 0:bbe98578d4c0 | 156 | |
dflet | 0:bbe98578d4c0 | 157 | /*****************************************************************************/ |
dflet | 0:bbe98578d4c0 | 158 | /* Structure/Enum declarations */ |
dflet | 0:bbe98578d4c0 | 159 | /*****************************************************************************/ |
dflet | 0:bbe98578d4c0 | 160 | typedef struct |
dflet | 0:bbe98578d4c0 | 161 | { |
dflet | 0:bbe98578d4c0 | 162 | _u16 flags; |
dflet | 0:bbe98578d4c0 | 163 | _u32 FileLen; |
dflet | 0:bbe98578d4c0 | 164 | _u32 AllocatedLen; |
dflet | 0:bbe98578d4c0 | 165 | _u32 Token[4]; |
dflet | 0:bbe98578d4c0 | 166 | }SlFsFileInfo_t; |
dflet | 0:bbe98578d4c0 | 167 | |
dflet | 0:bbe98578d4c0 | 168 | typedef enum |
dflet | 0:bbe98578d4c0 | 169 | { |
dflet | 0:bbe98578d4c0 | 170 | _FS_MODE_OPEN_READ = 0, |
dflet | 0:bbe98578d4c0 | 171 | _FS_MODE_OPEN_WRITE, |
dflet | 0:bbe98578d4c0 | 172 | _FS_MODE_OPEN_CREATE, |
dflet | 0:bbe98578d4c0 | 173 | _FS_MODE_OPEN_WRITE_CREATE_IF_NOT_EXIST |
dflet | 0:bbe98578d4c0 | 174 | }SlFsFileOpenAccessType_e; |
dflet | 0:bbe98578d4c0 | 175 | |
dflet | 0:bbe98578d4c0 | 176 | typedef enum |
dflet | 0:bbe98578d4c0 | 177 | { |
dflet | 0:bbe98578d4c0 | 178 | _FS_FILE_OPEN_FLAG_COMMIT = 0x1, /* MIRROR - for fail safe */ |
dflet | 0:bbe98578d4c0 | 179 | _FS_FILE_OPEN_FLAG_SECURE = 0x2, /* SECURE */ |
dflet | 0:bbe98578d4c0 | 180 | _FS_FILE_OPEN_FLAG_NO_SIGNATURE_TEST = 0x4, /* Relevant to secure file only */ |
dflet | 0:bbe98578d4c0 | 181 | _FS_FILE_OPEN_FLAG_STATIC = 0x8, /* Relevant to secure file only */ |
dflet | 0:bbe98578d4c0 | 182 | _FS_FILE_OPEN_FLAG_VENDOR = 0x10, /* Relevant to secure file only */ |
dflet | 0:bbe98578d4c0 | 183 | _FS_FILE_PUBLIC_WRITE= 0x20, /* Relevant to secure file only, the file can be opened for write without Token */ |
dflet | 0:bbe98578d4c0 | 184 | _FS_FILE_PUBLIC_READ = 0x40 /* Relevant to secure file only, the file can be opened for read without Token */ |
dflet | 0:bbe98578d4c0 | 185 | }SlFileOpenFlags_e; |
dflet | 0:bbe98578d4c0 | 186 | |
dflet | 0:bbe98578d4c0 | 187 | typedef enum |
dflet | 0:bbe98578d4c0 | 188 | { |
dflet | 0:bbe98578d4c0 | 189 | _FS_MODE_SIZE_GRAN_256B = 0, /* MAX_SIZE = 64K */ |
dflet | 0:bbe98578d4c0 | 190 | _FS_MODE_SIZE_GRAN_1KB, /* MAX_SIZE = 256K */ |
dflet | 0:bbe98578d4c0 | 191 | _FS_MODE_SIZE_GRAN_4KB, /* MAX_SZIE = 1M */ |
dflet | 0:bbe98578d4c0 | 192 | _FS_MODE_SIZE_GRAN_16KB, /* MAX_SIZE = 4M */ |
dflet | 0:bbe98578d4c0 | 193 | _FS_MODE_SIZE_GRAN_64KB, /* MAX_SIZE = 16M */ |
dflet | 0:bbe98578d4c0 | 194 | _FS_MAX_MODE_SIZE_GRAN |
dflet | 0:bbe98578d4c0 | 195 | }_SlFsFileOpenMaxSizeGran_e; |
dflet | 0:bbe98578d4c0 | 196 | |
dflet | 0:bbe98578d4c0 | 197 | /*****************************************************************************/ |
dflet | 0:bbe98578d4c0 | 198 | /* Internal Function prototypes */ |
dflet | 0:bbe98578d4c0 | 199 | /*****************************************************************************/ |
dflet | 0:bbe98578d4c0 | 200 | _u32 _sl_GetCreateFsMode(_u32 maxSizeInBytes,_u32 accessFlags); |
dflet | 0:bbe98578d4c0 | 201 | |
dflet | 0:bbe98578d4c0 | 202 | /*****************************************************************************/ |
dflet | 0:bbe98578d4c0 | 203 | /* Function prototypes */ |
dflet | 0:bbe98578d4c0 | 204 | /*****************************************************************************/ |
dflet | 0:bbe98578d4c0 | 205 | |
dflet | 0:bbe98578d4c0 | 206 | /*! |
dflet | 0:bbe98578d4c0 | 207 | \brief open file for read or write from/to storage device |
dflet | 0:bbe98578d4c0 | 208 | |
dflet | 0:bbe98578d4c0 | 209 | \param[in] pFileName File Name buffer pointer |
dflet | 0:bbe98578d4c0 | 210 | \param[in] AccessModeAndMaxSize Options: As described below |
dflet | 0:bbe98578d4c0 | 211 | \param[in] pToken Reserved for future use. Use NULL for this field |
dflet | 0:bbe98578d4c0 | 212 | \param[out] pFileHandle Pointing on the file and used for read and write commands to the file |
dflet | 0:bbe98578d4c0 | 213 | |
dflet | 0:bbe98578d4c0 | 214 | AccessModeAndMaxSize possible input \n |
dflet | 0:bbe98578d4c0 | 215 | FS_MODE_OPEN_READ - Read a file \n |
dflet | 0:bbe98578d4c0 | 216 | FS_MODE_OPEN_WRITE - Open for write for an existing file \n |
dflet | 0:bbe98578d4c0 | 217 | FS_MODE_OPEN_CREATE(maxSizeInBytes,accessModeFlags) - Open for creating a new file. Max file size is defined in bytes. \n |
dflet | 0:bbe98578d4c0 | 218 | For optimal FS size, use max size in 4K-512 bytes steps (e.g. 3584,7680,117760) \n |
dflet | 0:bbe98578d4c0 | 219 | Several access modes bits can be combined together from SlFileOpenFlags_e enum |
dflet | 0:bbe98578d4c0 | 220 | |
dflet | 0:bbe98578d4c0 | 221 | \return On success, zero is returned. On error, an error code is returned |
dflet | 0:bbe98578d4c0 | 222 | |
dflet | 0:bbe98578d4c0 | 223 | \sa sl_FsRead sl_FsWrite sl_FsClose |
dflet | 0:bbe98578d4c0 | 224 | \note belongs to \ref basic_api |
dflet | 0:bbe98578d4c0 | 225 | \warning |
dflet | 0:bbe98578d4c0 | 226 | \par Example: |
dflet | 0:bbe98578d4c0 | 227 | \code |
dflet | 0:bbe98578d4c0 | 228 | char* DeviceFileName = "MyFile.txt"; |
dflet | 0:bbe98578d4c0 | 229 | unsigned long MaxSize = 63 * 1024; //62.5K is max file size |
dflet | 0:bbe98578d4c0 | 230 | long DeviceFileHandle = -1; |
dflet | 0:bbe98578d4c0 | 231 | long RetVal; //negative retval is an error |
dflet | 0:bbe98578d4c0 | 232 | unsigned long Offset = 0; |
dflet | 0:bbe98578d4c0 | 233 | unsigned char InputBuffer[100]; |
dflet | 0:bbe98578d4c0 | 234 | |
dflet | 0:bbe98578d4c0 | 235 | // Create a file and write data. The file in this example is secured, without signature and with a fail safe commit |
dflet | 0:bbe98578d4c0 | 236 | RetVal = sl_FsOpen((unsigned char *)DeviceFileName, |
dflet | 0:bbe98578d4c0 | 237 | FS_MODE_OPEN_CREATE(MaxSize , _FS_FILE_OPEN_FLAG_NO_SIGNATURE_TEST | _FS_FILE_OPEN_FLAG_COMMIT ), |
dflet | 0:bbe98578d4c0 | 238 | NULL, &DeviceFileHandle); |
dflet | 0:bbe98578d4c0 | 239 | |
dflet | 0:bbe98578d4c0 | 240 | Offset = 0; |
dflet | 0:bbe98578d4c0 | 241 | //Preferred in secure file that the Offset and the length will be aligned to 16 bytes. |
dflet | 0:bbe98578d4c0 | 242 | RetVal = sl_FsWrite( DeviceFileHandle, Offset, (unsigned char *)"HelloWorld", strlen("HelloWorld")); |
dflet | 0:bbe98578d4c0 | 243 | |
dflet | 0:bbe98578d4c0 | 244 | RetVal = sl_FsClose(DeviceFileHandle, NULL, NULL , 0); |
dflet | 0:bbe98578d4c0 | 245 | |
dflet | 0:bbe98578d4c0 | 246 | // open the same file for read, using the Token we got from the creation procedure above |
dflet | 0:bbe98578d4c0 | 247 | RetVal = sl_FsOpen((unsigned char *)DeviceFileName, |
dflet | 0:bbe98578d4c0 | 248 | FS_MODE_OPEN_READ, |
dflet | 0:bbe98578d4c0 | 249 | NULL, &DeviceFileHandle); |
dflet | 0:bbe98578d4c0 | 250 | |
dflet | 0:bbe98578d4c0 | 251 | Offset = 0; |
dflet | 0:bbe98578d4c0 | 252 | RetVal = sl_FsRead( DeviceFileHandle, Offset, (unsigned char *)InputBuffer, strlen("HelloWorld")); |
dflet | 0:bbe98578d4c0 | 253 | |
dflet | 0:bbe98578d4c0 | 254 | RetVal = sl_FsClose(DeviceFileHandle, NULL, NULL , 0); |
dflet | 0:bbe98578d4c0 | 255 | |
dflet | 0:bbe98578d4c0 | 256 | \endcode |
dflet | 0:bbe98578d4c0 | 257 | */ |
dflet | 0:bbe98578d4c0 | 258 | #if _SL_INCLUDE_FUNC(sl_FsOpen) |
dflet | 0:bbe98578d4c0 | 259 | _i32 sl_FsOpen(_u8 *pFileName,_u32 AccessModeAndMaxSize,_u32 *pToken,_i32 *pFileHandle); |
dflet | 0:bbe98578d4c0 | 260 | #endif |
dflet | 0:bbe98578d4c0 | 261 | |
dflet | 0:bbe98578d4c0 | 262 | /*! |
dflet | 0:bbe98578d4c0 | 263 | \brief close file in storage device |
dflet | 0:bbe98578d4c0 | 264 | |
dflet | 0:bbe98578d4c0 | 265 | \param[in] FileHdl Pointer to the file (assigned from sl_FsOpen) |
dflet | 0:bbe98578d4c0 | 266 | \param[in] pCeritificateFileName Reserved for future use. Use NULL. |
dflet | 0:bbe98578d4c0 | 267 | \param[in] pSignature Reserved for future use. Use NULL. |
dflet | 0:bbe98578d4c0 | 268 | \param[in] SignatureLen Reserved for future use. Use 0. |
dflet | 0:bbe98578d4c0 | 269 | |
dflet | 0:bbe98578d4c0 | 270 | |
dflet | 0:bbe98578d4c0 | 271 | \return On success, zero is returned. On error, an error code is returned |
dflet | 0:bbe98578d4c0 | 272 | |
dflet | 0:bbe98578d4c0 | 273 | \sa sl_FsRead sl_FsWrite sl_FsOpen |
dflet | 0:bbe98578d4c0 | 274 | \note Call the fs_Close with signature = 'A' signature len = 1 for activating an abort action |
dflet | 0:bbe98578d4c0 | 275 | \warning |
dflet | 0:bbe98578d4c0 | 276 | \par Example: |
dflet | 0:bbe98578d4c0 | 277 | \code |
dflet | 0:bbe98578d4c0 | 278 | sl_FsClose(FileHandle,0,0,0); |
dflet | 0:bbe98578d4c0 | 279 | \endcode |
dflet | 0:bbe98578d4c0 | 280 | */ |
dflet | 0:bbe98578d4c0 | 281 | #if _SL_INCLUDE_FUNC(sl_FsClose) |
dflet | 0:bbe98578d4c0 | 282 | _i16 sl_FsClose(_i32 FileHdl,_u8* pCeritificateFileName,_u8* pSignature,_u32 SignatureLen); |
dflet | 0:bbe98578d4c0 | 283 | #endif |
dflet | 0:bbe98578d4c0 | 284 | |
dflet | 0:bbe98578d4c0 | 285 | /*! |
dflet | 0:bbe98578d4c0 | 286 | \brief Read block of data from a file in storage device |
dflet | 0:bbe98578d4c0 | 287 | |
dflet | 0:bbe98578d4c0 | 288 | \param[in] FileHdl Pointer to the file (assigned from sl_FsOpen) |
dflet | 0:bbe98578d4c0 | 289 | \param[in] Offset Offset to specific read block |
dflet | 0:bbe98578d4c0 | 290 | \param[out] pData Pointer for the received data |
dflet | 0:bbe98578d4c0 | 291 | \param[in] Len Length of the received data |
dflet | 0:bbe98578d4c0 | 292 | |
dflet | 0:bbe98578d4c0 | 293 | \return On success, returns the number of read bytes. On error, negative number is returned |
dflet | 0:bbe98578d4c0 | 294 | |
dflet | 0:bbe98578d4c0 | 295 | \sa sl_FsClose sl_FsWrite sl_FsOpen |
dflet | 0:bbe98578d4c0 | 296 | \note belongs to \ref basic_api |
dflet | 0:bbe98578d4c0 | 297 | \warning |
dflet | 0:bbe98578d4c0 | 298 | \par Example: |
dflet | 0:bbe98578d4c0 | 299 | \code |
dflet | 0:bbe98578d4c0 | 300 | Status = sl_FsRead(FileHandle, 0, &readBuff[0], readSize); |
dflet | 0:bbe98578d4c0 | 301 | \endcode |
dflet | 0:bbe98578d4c0 | 302 | */ |
dflet | 0:bbe98578d4c0 | 303 | #if _SL_INCLUDE_FUNC(sl_FsRead) |
dflet | 0:bbe98578d4c0 | 304 | _i32 sl_FsRead(_i32 FileHdl,_u32 Offset ,_u8* pData,_u32 Len); |
dflet | 0:bbe98578d4c0 | 305 | #endif |
dflet | 0:bbe98578d4c0 | 306 | |
dflet | 0:bbe98578d4c0 | 307 | /*! |
dflet | 0:bbe98578d4c0 | 308 | \brief write block of data to a file in storage device |
dflet | 0:bbe98578d4c0 | 309 | |
dflet | 0:bbe98578d4c0 | 310 | \param[in] FileHdl Pointer to the file (assigned from sl_FsOpen) |
dflet | 0:bbe98578d4c0 | 311 | \param[in] Offset Offset to specific block to be written |
dflet | 0:bbe98578d4c0 | 312 | \param[in] pData Pointer the transmitted data to the storage device |
dflet | 0:bbe98578d4c0 | 313 | \param[in] Len Length of the transmitted data |
dflet | 0:bbe98578d4c0 | 314 | |
dflet | 0:bbe98578d4c0 | 315 | \return On success, returns the number of written bytes. On error, an error code is returned |
dflet | 0:bbe98578d4c0 | 316 | |
dflet | 0:bbe98578d4c0 | 317 | \sa |
dflet | 0:bbe98578d4c0 | 318 | \note belongs to \ref basic_api |
dflet | 0:bbe98578d4c0 | 319 | \warning |
dflet | 0:bbe98578d4c0 | 320 | \par Example: |
dflet | 0:bbe98578d4c0 | 321 | \code |
dflet | 0:bbe98578d4c0 | 322 | Status = sl_FsWrite(FileHandle, 0, &buff[0], readSize); |
dflet | 0:bbe98578d4c0 | 323 | \endcode |
dflet | 0:bbe98578d4c0 | 324 | */ |
dflet | 0:bbe98578d4c0 | 325 | #if _SL_INCLUDE_FUNC(sl_FsWrite) |
dflet | 0:bbe98578d4c0 | 326 | _i32 sl_FsWrite(_i32 FileHdl,_u32 Offset,_u8* pData,_u32 Len); |
dflet | 0:bbe98578d4c0 | 327 | #endif |
dflet | 0:bbe98578d4c0 | 328 | |
dflet | 0:bbe98578d4c0 | 329 | /*! |
dflet | 0:bbe98578d4c0 | 330 | \brief get info on a file |
dflet | 0:bbe98578d4c0 | 331 | |
dflet | 0:bbe98578d4c0 | 332 | \param[in] pFileName File name |
dflet | 0:bbe98578d4c0 | 333 | \param[in] Token Reserved for future use. Use 0 |
dflet | 0:bbe98578d4c0 | 334 | \param[out] pFsFileInfo Returns the File's Information: flags,file size, allocated size and Tokens |
dflet | 0:bbe98578d4c0 | 335 | |
dflet | 0:bbe98578d4c0 | 336 | \return On success, zero is returned. On error, an error code is returned |
dflet | 0:bbe98578d4c0 | 337 | |
dflet | 0:bbe98578d4c0 | 338 | \sa sl_FsOpen |
dflet | 0:bbe98578d4c0 | 339 | \note belongs to \ref basic_api |
dflet | 0:bbe98578d4c0 | 340 | \warning |
dflet | 0:bbe98578d4c0 | 341 | \par Example: |
dflet | 0:bbe98578d4c0 | 342 | \code |
dflet | 0:bbe98578d4c0 | 343 | Status = sl_FsGetInfo("FileName.html",0,&FsFileInfo); |
dflet | 0:bbe98578d4c0 | 344 | \endcode |
dflet | 0:bbe98578d4c0 | 345 | */ |
dflet | 0:bbe98578d4c0 | 346 | #if _SL_INCLUDE_FUNC(sl_FsGetInfo) |
dflet | 0:bbe98578d4c0 | 347 | _i16 sl_FsGetInfo(_u8 *pFileName,_u32 Token,SlFsFileInfo_t* pFsFileInfo); |
dflet | 0:bbe98578d4c0 | 348 | #endif |
dflet | 0:bbe98578d4c0 | 349 | |
dflet | 0:bbe98578d4c0 | 350 | /*! |
dflet | 0:bbe98578d4c0 | 351 | \brief Delete specific file from a storage or all files from a storage (format) |
dflet | 0:bbe98578d4c0 | 352 | |
dflet | 0:bbe98578d4c0 | 353 | \param[in] pFileName File Name |
dflet | 0:bbe98578d4c0 | 354 | \param[in] Token Reserved for future use. Use 0 |
dflet | 0:bbe98578d4c0 | 355 | \return On success, zero is returned. On error, an error code is returned |
dflet | 0:bbe98578d4c0 | 356 | |
dflet | 0:bbe98578d4c0 | 357 | \sa |
dflet | 0:bbe98578d4c0 | 358 | \note belongs to \ref basic_api |
dflet | 0:bbe98578d4c0 | 359 | \warning |
dflet | 0:bbe98578d4c0 | 360 | \par Example: |
dflet | 0:bbe98578d4c0 | 361 | \code |
dflet | 0:bbe98578d4c0 | 362 | Status = sl_FsDel("FileName.html",0); |
dflet | 0:bbe98578d4c0 | 363 | \endcode |
dflet | 0:bbe98578d4c0 | 364 | */ |
dflet | 0:bbe98578d4c0 | 365 | #if _SL_INCLUDE_FUNC(sl_FsDel) |
dflet | 0:bbe98578d4c0 | 366 | _i16 sl_FsDel(_u8 *pFileName,_u32 Token); |
dflet | 0:bbe98578d4c0 | 367 | #endif |
dflet | 0:bbe98578d4c0 | 368 | /*! |
dflet | 0:bbe98578d4c0 | 369 | |
dflet | 0:bbe98578d4c0 | 370 | Close the Doxygen group. |
dflet | 0:bbe98578d4c0 | 371 | @} |
dflet | 0:bbe98578d4c0 | 372 | |
dflet | 0:bbe98578d4c0 | 373 | */ |
dflet | 0:bbe98578d4c0 | 374 | |
dflet | 0:bbe98578d4c0 | 375 | #ifdef __cplusplus |
dflet | 0:bbe98578d4c0 | 376 | } |
dflet | 0:bbe98578d4c0 | 377 | #endif /* __cplusplus */ |
dflet | 0:bbe98578d4c0 | 378 | |
dflet | 0:bbe98578d4c0 | 379 | #endif /* __FS_H__ */ |
dflet | 0:bbe98578d4c0 | 380 | |
dflet | 0:bbe98578d4c0 | 381 |