mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-09-07 06:37:47 -04:00
Add the Labs projects provided in the V10.2.1_191129 zip file.
This commit is contained in:
parent
46e5937529
commit
e5708b38e9
801 changed files with 356576 additions and 0 deletions
163
FreeRTOS-Labs/Source/FreeRTOS-Plus-FAT/include/ff_file.h
Normal file
163
FreeRTOS-Labs/Source/FreeRTOS-Plus-FAT/include/ff_file.h
Normal file
|
@ -0,0 +1,163 @@
|
|||
/*
|
||||
* FreeRTOS+FAT build 191128 - Note: FreeRTOS+FAT is still in the lab!
|
||||
* Copyright (C) 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||
* Authors include James Walmsley, Hein Tibosch and Richard Barry
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* https://www.FreeRTOS.org
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file ff_file.h
|
||||
* @ingroup FILEIO
|
||||
**/
|
||||
#ifndef _FF_FILE_H_
|
||||
#define _FF_FILE_H_
|
||||
|
||||
#ifndef PLUS_FAT_H
|
||||
#error this header will be included from "plusfat.h"
|
||||
#endif
|
||||
|
||||
#define FF_SEEK_SET 0
|
||||
#define FF_SEEK_CUR 1
|
||||
#define FF_SEEK_END 2
|
||||
|
||||
#if( ffconfigOPTIMISE_UNALIGNED_ACCESS != 0 )
|
||||
#define FF_BUFSTATE_INVALID 0x00 /* Data in file handle buffer is invalid. */
|
||||
#define FF_BUFSTATE_VALID 0x01 /* Valid data in pBuf (Something has been read into it). */
|
||||
#define FF_BUFSTATE_WRITTEN 0x02 /* Data was written into pBuf, this must be saved when leaving sector. */
|
||||
#endif
|
||||
|
||||
#if( ffconfigDEV_SUPPORT != 0 )
|
||||
struct xDEV_NODE
|
||||
{
|
||||
uint8_t
|
||||
ucIsDevice;
|
||||
};
|
||||
#endif
|
||||
|
||||
typedef struct _FF_FILE
|
||||
{
|
||||
FF_IOManager_t *pxIOManager; /* Ioman Pointer! */
|
||||
uint32_t ulFileSize; /* File's Size. */
|
||||
uint32_t ulObjectCluster; /* File's Start Cluster. */
|
||||
uint32_t ulChainLength; /* Total Length of the File's cluster chain. */
|
||||
uint32_t ulCurrentCluster; /* Prevents FAT Thrashing. */
|
||||
uint32_t ulAddrCurrentCluster; /* Address of the current cluster. */
|
||||
uint32_t ulEndOfChain; /* Address of the last cluster in the chain. */
|
||||
uint32_t ulFilePointer; /* Current Position Pointer. */
|
||||
uint32_t ulDirCluster; /* Cluster Number that the Dirent is in. */
|
||||
uint32_t ulValidFlags; /* Handle validation flags. */
|
||||
|
||||
#if( ffconfigOPTIMISE_UNALIGNED_ACCESS != 0 )
|
||||
uint8_t *pucBuffer; /* A buffer for providing fast unaligned access. */
|
||||
uint8_t ucState; /* State information about the buffer. */
|
||||
#endif
|
||||
uint8_t ucMode; /* Mode that File Was opened in. */
|
||||
uint16_t usDirEntry; /* Dirent Entry Number describing this file. */
|
||||
|
||||
#if( ffconfigDEV_SUPPORT != 0 )
|
||||
struct SFileCache *pxDevNode;
|
||||
#endif
|
||||
struct _FF_FILE *pxNext; /* Pointer to the next file object in the linked list. */
|
||||
} FF_FILE;
|
||||
|
||||
#define FF_VALID_FLAG_INVALID 0x00000001
|
||||
#define FF_VALID_FLAG_DELETED 0x00000002
|
||||
|
||||
/*---------- PROTOTYPES */
|
||||
/* PUBLIC (Interfaces): */
|
||||
|
||||
#if( ffconfigUNICODE_UTF16_SUPPORT != 0 )
|
||||
FF_FILE *FF_Open( FF_IOManager_t *pxIOManager, const FF_T_WCHAR *path, uint8_t Mode, FF_Error_t *pError );
|
||||
BaseType_t FF_isDirEmpty( FF_IOManager_t *pxIOManager, const FF_T_WCHAR *Path );
|
||||
FF_Error_t FF_RmFile( FF_IOManager_t *pxIOManager, const FF_T_WCHAR *path );
|
||||
FF_Error_t FF_RmDir( FF_IOManager_t *pxIOManager, const FF_T_WCHAR *path );
|
||||
FF_Error_t FF_Move( FF_IOManager_t *pxIOManager, const FF_T_WCHAR *szSourceFile, const FF_T_WCHAR *szDestinationFile,
|
||||
BaseType_t bDeleteIfExists );
|
||||
#else /* ffconfigUNICODE_UTF16_SUPPORT */
|
||||
FF_FILE *FF_Open( FF_IOManager_t *pxIOManager, const char *path, uint8_t Mode, FF_Error_t *pError );
|
||||
BaseType_t FF_isDirEmpty( FF_IOManager_t *pxIOManager, const char *Path );
|
||||
FF_Error_t FF_RmFile( FF_IOManager_t *pxIOManager, const char *path );
|
||||
FF_Error_t FF_RmDir( FF_IOManager_t *pxIOManager, const char *path );
|
||||
FF_Error_t FF_Move( FF_IOManager_t *pxIOManager, const char *szSourceFile, const char *szDestinationFile,
|
||||
BaseType_t bDeleteIfExists );
|
||||
#endif /* ffconfigUNICODE_UTF16_SUPPORT */
|
||||
|
||||
#if( ffconfigTIME_SUPPORT != 0 )
|
||||
enum {
|
||||
ETimeCreate = 1,
|
||||
ETimeMod = 2,
|
||||
ETimeAccess = 4,
|
||||
ETimeAll = 7
|
||||
};
|
||||
FF_Error_t FF_SetFileTime( FF_FILE *pFile, FF_SystemTime_t *pxTime, UBaseType_t uxWhat );
|
||||
#if( ffconfigUNICODE_UTF16_SUPPORT != 0 )
|
||||
FF_Error_t FF_SetTime( FF_IOManager_t *pxIOManager, const FF_T_WCHAR *path, FF_SystemTime_t *pxTime, UBaseType_t uxWhat );
|
||||
#else
|
||||
FF_Error_t FF_SetTime( FF_IOManager_t *pxIOManager, const char *path, FF_SystemTime_t *pxTime, UBaseType_t uxWhat );
|
||||
#endif /* ffconfigUNICODE_UTF16_SUPPORT */
|
||||
#endif /* ffconfigTIME_SUPPORT */
|
||||
|
||||
#if( ffconfigUNICODE_UTF16_SUPPORT != 0 )
|
||||
FF_Error_t FF_SetPerm( FF_IOManager_t *pxIOManager, const FF_T_WCHAR *path, UBaseType_t aPerm );
|
||||
#else
|
||||
FF_Error_t FF_SetPerm( FF_IOManager_t *pxIOManager, const char *path, UBaseType_t aPerm );
|
||||
#endif
|
||||
|
||||
FF_Error_t FF_SetEof( FF_FILE *pFile );
|
||||
|
||||
FF_Error_t FF_Close( FF_FILE *pFile );
|
||||
int32_t FF_GetC( FF_FILE *pFile );
|
||||
int32_t FF_GetLine( FF_FILE *pFile, char *szLine, uint32_t ulLimit );
|
||||
int32_t FF_Read( FF_FILE *pFile, uint32_t ElementSize, uint32_t Count, uint8_t *buffer );
|
||||
int32_t FF_Write( FF_FILE *pFile, uint32_t ElementSize, uint32_t Count, uint8_t *buffer );
|
||||
BaseType_t FF_isEOF( FF_FILE *pFile );
|
||||
int32_t FF_BytesLeft( FF_FILE *pFile ); /* Returns # of bytes left to read. */
|
||||
|
||||
/* FF_FileSize is an earlier version of FF_GetFileSize(). For files
|
||||
equal to or larger than 2GB, the return value is negative.
|
||||
Function is deprecated. Please use FF_GetFileSize(). */
|
||||
int32_t FF_FileSize( FF_FILE *pFile ); /* Returns # of bytes in a file. */
|
||||
|
||||
/* Use the following function in case files may get larger than 2 GB.
|
||||
Writes the size of a file to the parameter.
|
||||
Returns 0 or error code. */
|
||||
FF_Error_t FF_GetFileSize( FF_FILE *pFile, uint32_t *pulSize );
|
||||
|
||||
FF_Error_t FF_Seek( FF_FILE *pFile, int32_t Offset, BaseType_t xOrigin );
|
||||
int32_t FF_PutC( FF_FILE *pFile, uint8_t Value );
|
||||
|
||||
static portINLINE uint32_t FF_Tell( FF_FILE *pFile )
|
||||
{
|
||||
return pFile ? pFile->ulFilePointer : 0;
|
||||
}
|
||||
|
||||
uint8_t FF_GetModeBits( const char *Mode );
|
||||
|
||||
FF_Error_t FF_CheckValid( FF_FILE *pFile ); /* Check if pFile is a valid FF_FILE pointer. */
|
||||
|
||||
#if( ffconfigREMOVABLE_MEDIA != 0 )
|
||||
int32_t FF_Invalidate( FF_IOManager_t *pxIOManager ); /* Invalidate all handles belonging to pxIOManager. */
|
||||
#endif
|
||||
|
||||
/* Private : */
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue