original files of m241
This commit is contained in:
@@ -0,0 +1,391 @@
|
||||
/* flbase.h - True Flash File System */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1984-2005, 2009-2010, 2013 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute or otherwise make use of this software
|
||||
* may be licensed only pursuant to the terms of an applicable Wind River
|
||||
* license agreement.
|
||||
*/
|
||||
|
||||
/* FAT-FTL Lite Software Development Kit
|
||||
* Copyright (C) M-Systems Ltd. 1995-1997 */
|
||||
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
01i,24sep13,jxu fixed crc16 symbol conflict with btstack component
|
||||
01h,07may13,jxu eTFFS: added declaration of crc16() and dbgMsg
|
||||
01h,10dec12,xwu Coverity issue of tffs.
|
||||
01g,21sep10,jxu Cleanup of warning: added UNAL4_ARG_TYPE for type casting.
|
||||
01f,29jul10,pad Moved extern C statement after include statements.
|
||||
01e,11dec09,zly fix defect190947: added erroe codes for TFFS
|
||||
01d,23sep09,zly make checkStatus()`s logmsg controlled.
|
||||
default no logmsg.
|
||||
01c,02feb05,aeg added include of logLib.h (SPR #106381).
|
||||
01b,16nov04,mil removed deprecated __FUNCTION__ for GNU.
|
||||
01a,29jul04,alr modified file header, restarted history
|
||||
*/
|
||||
|
||||
#ifndef FLBASE_H
|
||||
#define FLBASE_H
|
||||
|
||||
#include "flsystem.h"
|
||||
#include "flcustom.h"
|
||||
#include "logLib.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* control logmsg in checkStatus()*/
|
||||
#undef DEBUG_CHECKSTATUS
|
||||
|
||||
/* standard type definitions */
|
||||
typedef int FLBoolean;
|
||||
|
||||
/* Boolean constants */
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
#ifndef TFFS_ON
|
||||
#define TFFS_ON 1
|
||||
#endif
|
||||
#ifndef TFFS_OFF
|
||||
#define TFFS_OFF 0
|
||||
#endif
|
||||
|
||||
#define SECTOR_SIZE (1 << SECTOR_SIZE_BITS)
|
||||
|
||||
/* define SectorNo range according to media maximum size */
|
||||
#if (MAX_VOLUME_MBYTES * 0x100000l) / SECTOR_SIZE > 0x10000l
|
||||
typedef unsigned long SectorNo;
|
||||
#define UNASSIGNED_SECTOR 0xffffffffl
|
||||
#else
|
||||
typedef unsigned short SectorNo;
|
||||
#define UNASSIGNED_SECTOR 0xffff
|
||||
#endif
|
||||
|
||||
#if FAR_LEVEL > 0
|
||||
#define FAR0 far
|
||||
#else
|
||||
#define FAR0
|
||||
#endif
|
||||
|
||||
#if FAR_LEVEL > 1
|
||||
#define FAR1 far
|
||||
#else
|
||||
#define FAR1
|
||||
#endif
|
||||
|
||||
#if FAR_LEVEL > 2
|
||||
#define FAR2 far
|
||||
#else
|
||||
#define FAR2
|
||||
#endif
|
||||
|
||||
|
||||
#define vol (*pVol)
|
||||
|
||||
|
||||
#ifndef TFFS_BIG_ENDIAN
|
||||
|
||||
typedef unsigned short LEushort;
|
||||
typedef unsigned long LEulong;
|
||||
|
||||
#define LE2(arg) arg
|
||||
#define toLE2(to,arg) (to) = (arg)
|
||||
#define LE4(arg) arg
|
||||
#define toLE4(to,arg) (to) = (arg)
|
||||
#define COPY2(to,arg) (to) = (arg)
|
||||
#define COPY4(to,arg) (to) = (arg)
|
||||
|
||||
typedef unsigned char Unaligned[2];
|
||||
typedef Unaligned Unaligned4[2];
|
||||
typedef Unaligned const FAR0 * UNAL4_ARG_TYPE;
|
||||
/* for type casting when using UNAL4*/
|
||||
|
||||
#define UNAL2(arg) fromUNAL(arg)
|
||||
#define toUNAL2(to,arg) toUNAL(to,arg)
|
||||
|
||||
#define UNAL4(arg) fromUNALLONG(arg)
|
||||
#define toUNAL4(to,arg) toUNALLONG(to,arg)
|
||||
|
||||
extern void toUNAL(unsigned char FAR0 *unal, unsigned n);
|
||||
|
||||
extern unsigned short fromUNAL(unsigned char const FAR0 *unal);
|
||||
|
||||
extern void toUNALLONG(Unaligned FAR0 *unal, unsigned long n);
|
||||
|
||||
extern unsigned long fromUNALLONG(Unaligned const FAR0 *unal);
|
||||
|
||||
#else
|
||||
|
||||
typedef unsigned char LEushort[2];
|
||||
typedef unsigned char LEulong[4];
|
||||
typedef unsigned char const FAR0 * UNAL4_ARG_TYPE;
|
||||
/* for type casting when using UNAL4*/
|
||||
|
||||
#define LE2(arg) fromLEushort(arg)
|
||||
#define toLE2(to,arg) toLEushort(to,arg)
|
||||
#define LE4(arg) fromLEulong(arg)
|
||||
#define toLE4(to,arg) toLEulong(to,arg)
|
||||
#define COPY2(to,arg) copyShort(to,arg)
|
||||
#define COPY4(to,arg) copyLong(to,arg)
|
||||
|
||||
#define Unaligned LEushort
|
||||
#define Unaligned4 LEulong
|
||||
|
||||
extern void toLEushort(unsigned char FAR0 *le, unsigned n);
|
||||
|
||||
extern unsigned short fromLEushort(unsigned char const FAR0 *le);
|
||||
|
||||
extern void toLEulong(unsigned char FAR0 *le, unsigned long n);
|
||||
|
||||
extern unsigned long fromLEulong(unsigned char const FAR0 *le);
|
||||
|
||||
extern void copyShort(unsigned char FAR0 *to,
|
||||
unsigned char const FAR0 *from);
|
||||
|
||||
extern void copyLong(unsigned char FAR0 *to,
|
||||
unsigned char const FAR0 *from);
|
||||
|
||||
#define UNAL2 LE2
|
||||
#define toUNAL2 toLE2
|
||||
|
||||
#define UNAL4 LE4
|
||||
#define toUNAL4 toLE4
|
||||
|
||||
#endif /* TFFS_BIG_ENDIAN */
|
||||
|
||||
/* error codes*/
|
||||
|
||||
#define S_tffsLib_BAD_FUNCTION (M_tffsLib | 1)
|
||||
#define S_tffsLib_FILE_NOT_FOUND (M_tffsLib | 2)
|
||||
#define S_tffsLib_PATH_NOT_FOUND (M_tffsLib | 3)
|
||||
#define S_tffsLib_TOO_MANY_OPEN_FILES (M_tffsLib |4)
|
||||
#define S_tffsLib_NO_WRITE_ACCESS (M_tffsLib | 5)
|
||||
#define S_tffsLib_BAD_FILE_HANDLE (M_tffsLib | 6)
|
||||
#define S_tffsLib_DRIVE_NOT_AVAILABLE (M_tffsLib | 9)
|
||||
#define S_tffsLib_NON_FAT_FORMAT (M_tffsLib | 10)
|
||||
#define S_tffsLib_FORMAT_NOT_SUPPORTED (M_tffsLib | 11)
|
||||
#define S_tffsLib_NO_MORE_FILES (M_tffsLib | 18)
|
||||
#define S_tffsLib_WRITE_PROTECT (M_tffsLib | 19)
|
||||
#define S_tffsLib_BAD_DRIVE_HANDLE (M_tffsLib | 20)
|
||||
#define S_tffsLib_DRIVE_NOT_READY (M_tffsLib | 21)
|
||||
#define S_tffsLib_UNKNOWN_CMD (M_tffsLib | 22)
|
||||
#define S_tffsLib_BAD_FORMAT (M_tffsLib | 23)
|
||||
#define S_tffsLib_BAD_LENGTH (M_tffsLib | 24)
|
||||
#define S_tffsLib_DATA_ERROR (M_tffsLib | 25)
|
||||
#define S_tffsLib_UNKNOWN_MEDIA (M_tffsLib | 26)
|
||||
#define S_tffsLib_SECTOR_NOT_FOUND (M_tffsLib | 27)
|
||||
#define S_tffsLib_OUT_OF_PAPER (M_tffsLib | 28)
|
||||
#define S_tffsLib_WRITE_FAULT (M_tffsLib | 29)
|
||||
#define S_tffsLib_READ_FAULT (M_tffsLib | 30)
|
||||
#define S_tffsLib_GENERAL_FAILURE (M_tffsLib | 31)
|
||||
#define S_tffsLib_DISK_CHANGE (M_tffsLib | 34)
|
||||
#define S_tffsLib_VPP_FAILURE (M_tffsLib | 50)
|
||||
#define S_tffsLib_BAD_PARAMETER (M_tffsLib | 51)
|
||||
#define S_tffsLib_NO_SPACE_IN_VOLUME (M_tffsLib | 52)
|
||||
#define S_tffsLib_INVALID_FAT_CHAIN (M_tffsLib | 53)
|
||||
#define S_tffsLib_ROOT_DIR_FULL (M_tffsLib | 54)
|
||||
#define S_tffsLib_NOT_MOUNTED (M_tffsLib | 55)
|
||||
#define S_tffsLib_PATH_IS_ROOTDIR (M_tffsLib | 56)
|
||||
#define S_tffsLib_NOT_A_DIR (M_tffsLib | 57)
|
||||
#define S_tffsLib_DIR_NOT_EMPTY (M_tffsLib | 58)
|
||||
#define S_tffsLib_FILE_IS_A_DIR (M_tffsLib | 59)
|
||||
#define S_tffsLib_ADAPTER_NOT_FOUND (M_tffsLib | 60)
|
||||
#define S_tffsLib_FORMATTING_ERROR (M_tffsLib | 62)
|
||||
#define S_tffsLib_NOT_ENOUGH_MEMORY (M_tffsLib | 63)
|
||||
#define S_tffsLib_VOLUME_TOO_SMALL (M_tffsLib | 64)
|
||||
#define S_tffsLib_BUFFERING_ERROR (M_tffsLib | 65)
|
||||
#define S_tffsLib_FILE_ALREADY_EXISTS (M_tffsLib | 80)
|
||||
#define S_tffsLib_INCOMPLETE (M_tffsLib | 100)
|
||||
#define S_tffsLib_TIMED_OUT (M_tffsLib | 101)
|
||||
#define S_tffsLib_TOO_MANY_COMPONENTS (M_tffsLib | 102)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef IFLITE_ERROR_CODES
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {flOK = 0, /* Status code for operation.
|
||||
A zero value indicates success,
|
||||
other codes are the extended
|
||||
DOS codes. */
|
||||
flBadFunction = 1,
|
||||
flFileNotFound = 2,
|
||||
flPathNotFound = 3,
|
||||
flTooManyOpenFiles = 4,
|
||||
flNoWriteAccess = 5,
|
||||
flBadFileHandle = 6,
|
||||
flDriveNotAvailable = 9,
|
||||
flNonFATformat = 10,
|
||||
flFormatNotSupported = 11,
|
||||
flNoMoreFiles = 18,
|
||||
flWriteProtect = 19,
|
||||
flBadDriveHandle = 20,
|
||||
flDriveNotReady = 21,
|
||||
flUnknownCmd = 22,
|
||||
flBadFormat = 23,
|
||||
flBadLength = 24,
|
||||
flDataError = 25,
|
||||
flUnknownMedia = 26,
|
||||
flSectorNotFound = 27,
|
||||
flOutOfPaper = 28,
|
||||
flWriteFault = 29,
|
||||
flReadFault = 30,
|
||||
flGeneralFailure = 31,
|
||||
flDiskChange = 34,
|
||||
flVppFailure = 50,
|
||||
flBadParameter = 51,
|
||||
flNoSpaceInVolume = 52,
|
||||
flInvalidFATchain = 53,
|
||||
flRootDirectoryFull = 54,
|
||||
flNotMounted = 55,
|
||||
flPathIsRootDirectory = 56,
|
||||
flNotADirectory = 57,
|
||||
flDirectoryNotEmpty = 58,
|
||||
flFileIsADirectory = 59,
|
||||
flAdapterNotFound = 60,
|
||||
flFormattingError = 62,
|
||||
flNotEnoughMemory = 63,
|
||||
flVolumeTooSmall = 64,
|
||||
flBufferingError = 65,
|
||||
flFileAlreadyExists = 80,
|
||||
|
||||
flIncomplete = 100,
|
||||
flTimedOut = 101,
|
||||
flTooManyComponents = 102
|
||||
} FLStatus;
|
||||
#else /* IFLITE_ERROR_CODES */
|
||||
|
||||
#include "type.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {flOK = ERR_NONE,
|
||||
/* Status code for operation.
|
||||
A zero value indicates success,
|
||||
other codes are the extended
|
||||
DOS codes. */
|
||||
flBadFunction = ERR_SW_HW,
|
||||
flFileNotFound = ERR_NOTEXISTS,
|
||||
flPathNotFound = ERR_NOTEXISTS,
|
||||
flTooManyOpenFiles = ERR_MAX_FILES,
|
||||
flNoWriteAccess = ERR_WRITE,
|
||||
flBadFileHandle = ERR_NOTOPEN,
|
||||
flDriveNotAvailable = ERR_SW_HW,
|
||||
flNonFATformat = ERR_PARTITION,
|
||||
flFormatNotSupported = ERR_PARTITION,
|
||||
flNoMoreFiles = ERR_NOTEXISTS,
|
||||
flWriteProtect = ERR_WRITE,
|
||||
flBadDriveHandle = ERR_SW_HW,
|
||||
flDriveNotReady = ERR_PARTITION,
|
||||
flUnknownCmd = ERR_PARAM,
|
||||
flBadFormat = ERR_PARTITION,
|
||||
flBadLength = ERR_SW_HW,
|
||||
flDataError = ERR_READ,
|
||||
flUnknownMedia = ERR_PARTITION,
|
||||
flSectorNotFound = ERR_READ,
|
||||
flOutOfPaper = ERR_SW_HW,
|
||||
flWriteFault = ERR_WRITE,
|
||||
flReadFault = ERR_READ,
|
||||
flGeneralFailure = ERR_SW_HW,
|
||||
flDiskChange = ERR_PARTITION,
|
||||
flVppFailure = ERR_WRITE,
|
||||
flBadParameter = ERR_PARAM,
|
||||
flNoSpaceInVolume = ERR_SPACE,
|
||||
flInvalidFATchain = ERR_PARTITION,
|
||||
flRootDirectoryFull = ERR_DIRECTORY,
|
||||
flNotMounted = ERR_PARTITION,
|
||||
flPathIsRootDirectory = ERR_DIRECTORY,
|
||||
flNotADirectory = ERR_DIRECTORY,
|
||||
flDirectoryNotEmpty = ERR_NOT_EMPTY,
|
||||
flFileIsADirectory = ERR_DIRECTORY,
|
||||
flAdapterNotFound = ERR_DETECT,
|
||||
flFormattingError = ERR_FORMAT,
|
||||
flNotEnoughMemory = ERR_SW_HW,
|
||||
flVolumeTooSmall = ERR_FORMAT,
|
||||
flBufferingError = ERR_SW_HW,
|
||||
flFileAlreadyExists = ERR_EXISTS,
|
||||
|
||||
flIncomplete = ERR_DETECT,
|
||||
flTimedOut = ERR_SW_HW,
|
||||
flTooManyComponents = ERR_PARAM
|
||||
} FLStatus;
|
||||
#endif /* IFLITE_ERROR_CODES */
|
||||
|
||||
/* call a procedure returning status and fail if it fails. This works only in
|
||||
routines that return Status */
|
||||
|
||||
#ifdef DEBUG_CHECKSTATUS
|
||||
#define checkStatus(exp) { FLStatus status = (exp); \
|
||||
if (status != flOK){ \
|
||||
logMsg("checkStatus() ERROR line %i\n",__LINE__,2,3,4,5,6); \
|
||||
return status; } }
|
||||
#else
|
||||
#define checkStatus(exp) { FLStatus status = (exp); \
|
||||
if (status != flOK){ \
|
||||
return status; } }
|
||||
#endif
|
||||
|
||||
/* better debug routines. EAN */
|
||||
|
||||
#define DBG_MUST 0x1 /* always print */
|
||||
#define DBG_FATAL 0x2 /* fatal error */
|
||||
#define DBG_ERROR 0x4 /* normal error */
|
||||
#define DBG_WARNING 0x8 /* warning */
|
||||
#define DBG_FLOW 0x10 /* monitor where i am */
|
||||
|
||||
#define DEBUG_MASK (DBG_MUST | DBG_FATAL | DBG_ERROR | DBG_WARNING)
|
||||
/* set debug level */
|
||||
|
||||
/* #define DEBUG_FTL */ /* turn on/off debug messages */
|
||||
|
||||
#ifdef DEBUG_FTL
|
||||
|
||||
/* sjk changed printf to logMsg */
|
||||
|
||||
#define dbgMsg(num,msg,var1,var2,var3,var4,var5,var6) do { \
|
||||
if(num & DEBUG_MASK) \
|
||||
logMsg("%s:%d: "msg, \
|
||||
(_Vx_usr_arg_t)__FUNCTION__, \
|
||||
(_Vx_usr_arg_t)__LINE__, \
|
||||
(_Vx_usr_arg_t)var1, \
|
||||
(_Vx_usr_arg_t)var2, \
|
||||
(_Vx_usr_arg_t)var3, \
|
||||
(_Vx_usr_arg_t)var4); \
|
||||
}while(0)
|
||||
|
||||
#else
|
||||
|
||||
#define dbgMsg(num,msg,var1,var2,var3,var4,var5,var6) /* nothing */
|
||||
|
||||
#endif /* #ifdef DEBUG_FTL */
|
||||
|
||||
#define CRC16_SEED 0xFFFF
|
||||
#define CRC16_GOOD 0xF0B8
|
||||
|
||||
unsigned short flCrc16 (unsigned short seed, const unsigned char * pBuf,
|
||||
unsigned int len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#include "flsysfun.h"
|
||||
|
||||
#endif /* FLBASE_H */
|
||||
Reference in New Issue
Block a user