TI's CC3100 host driver and demo. Experimental and a work in progress.

Dependencies:   mbed

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?

UserRevisionLine numberNew 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