419 lines
14 KiB
C
419 lines
14 KiB
C
/*
|
|
* Copyright (c) 2016, Benoît Thébaudeau <benoit@wsystem.com>
|
|
* All rights reserved.
|
|
*
|
|
* Based on the FatFs Module,
|
|
* Copyright (c) 2016, ChaN
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the following disclaimer.
|
|
*
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
* and/or other materials provided with the distribution.
|
|
*
|
|
* 3. Neither the name of the copyright holder nor the names of its contributors
|
|
* may be used to endorse or promote products derived from this software
|
|
* without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
/**
|
|
* \addtogroup zoul
|
|
* @{
|
|
*
|
|
* \defgroup remote-fat RE-Mote FatFs
|
|
*
|
|
* Default port of FatFs on RE-Mote.
|
|
* @{
|
|
*
|
|
* \file
|
|
* Header file configuring FatFs for RE-Mote.
|
|
*/
|
|
#ifndef FFCONF_H_
|
|
#define FFCONF_H_
|
|
|
|
#include "contiki.h"
|
|
|
|
#define _FFCONF 68020 /**< Revision ID */
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
/** \name Function Configuration
|
|
* @{
|
|
*/
|
|
|
|
#ifndef _FS_READONLY
|
|
/** This option switches the read-only configuration
|
|
* (\c 0: read/write or \c 1: read-only).
|
|
*
|
|
* The read-only configuration removes the writing functions from the API:
|
|
* \c f_write(), \c f_sync(), \c f_unlink(), \c f_mkdir(), \c f_chmod(),
|
|
* \c f_rename(), \c f_truncate(), \c f_getfree(), and optional writing
|
|
* functions as well.
|
|
*/
|
|
#define _FS_READONLY 0
|
|
#endif
|
|
|
|
#ifndef _FS_MINIMIZE
|
|
/** This option defines the minimization level to remove some basic API
|
|
* functions.
|
|
*
|
|
* \c 0: All the basic functions are enabled.
|
|
* \c 1: \c f_stat(), \c f_getfree(), \c f_unlink(), \c f_mkdir(),
|
|
* \c f_truncate(), and \c f_rename() are removed.
|
|
* \c 2: \c f_opendir(), \c f_readdir(), and \c f_closedir() are removed in
|
|
* addition to \c 1.
|
|
* \c 3: \c f_lseek() is removed in addition to \c 2.
|
|
*/
|
|
#define _FS_MINIMIZE 0
|
|
#endif
|
|
|
|
#ifndef _USE_STRFUNC
|
|
/** This option switches the string functions: \c f_gets(), \c f_putc(),
|
|
* \c f_puts(), and \c f_printf().
|
|
*
|
|
* \c 0: Disable string functions.
|
|
* \c 1: Enable without LF-CRLF conversion.
|
|
* \c 2: Enable with LF-CRLF conversion.
|
|
*/
|
|
#define _USE_STRFUNC 1
|
|
#endif
|
|
|
|
#ifndef _USE_FIND
|
|
/** This option switches the filtered directory read functions: \c f_findfirst()
|
|
* and \c f_findnext() (\c 0: disable, \c 1: enable, \c 2: enable with matching
|
|
* \c altname[] too).
|
|
*/
|
|
#define _USE_FIND 1
|
|
#endif
|
|
|
|
#ifndef _USE_MKFS
|
|
/** This option switches the \c f_mkfs() function
|
|
* (\c 0: disable or \c 1: enable).
|
|
*/
|
|
#define _USE_MKFS 1
|
|
#endif
|
|
|
|
#ifndef _USE_FASTSEEK
|
|
/** This option switches the fast seek function
|
|
* (\c 0: disable or \c 1: enable).
|
|
*/
|
|
#define _USE_FASTSEEK 0
|
|
#endif
|
|
|
|
#ifndef _USE_EXPAND
|
|
/** This option switches the \c f_expand() function
|
|
* (\c 0: disable or \c 1: enable).
|
|
*/
|
|
#define _USE_EXPAND 0
|
|
#endif
|
|
|
|
#ifndef _USE_CHMOD
|
|
/** This option switches the attribute manipulation functions: \c f_chmod() and
|
|
* \c f_utime() (\c 0: disable or \c 1: enable). Also, \c _FS_READONLY needs to
|
|
* be \c 0 to enable this option.
|
|
*/
|
|
#define _USE_CHMOD 1
|
|
#endif
|
|
|
|
#ifndef _USE_LABEL
|
|
/** This option switches the volume label functions: \c f_getlabel() and
|
|
* \c f_setlabel() (\c 0: disable or \c 1: enable).
|
|
*/
|
|
#define _USE_LABEL 1
|
|
#endif
|
|
|
|
#ifndef _USE_FORWARD
|
|
/** This option switches the \c f_forward() function
|
|
* (\c 0: disable or \c 1: enable).
|
|
*/
|
|
#define _USE_FORWARD 0
|
|
#endif
|
|
|
|
/** @} */
|
|
/*----------------------------------------------------------------------------*/
|
|
/** \name Locale and Namespace Configuration
|
|
* @{
|
|
*/
|
|
|
|
#ifndef _CODE_PAGE
|
|
/** This option specifies the OEM code page to be used on the target system.
|
|
* Incorrect setting of the code page can cause a file open failure.
|
|
*
|
|
* \c 1 - ASCII (no extended character, non-LFN cfg. only)
|
|
* \c 437 - U.S.
|
|
* \c 720 - Arabic
|
|
* \c 737 - Greek
|
|
* \c 771 - KBL
|
|
* \c 775 - Baltic
|
|
* \c 850 - Latin 1
|
|
* \c 852 - Latin 2
|
|
* \c 855 - Cyrillic
|
|
* \c 857 - Turkish
|
|
* \c 860 - Portuguese
|
|
* \c 861 - Icelandic
|
|
* \c 862 - Hebrew
|
|
* \c 863 - Canadian French
|
|
* \c 864 - Arabic
|
|
* \c 865 - Nordic
|
|
* \c 866 - Russian
|
|
* \c 869 - Greek 2
|
|
* \c 932 - Japanese (DBCS)
|
|
* \c 936 - Simplified Chinese (DBCS)
|
|
* \c 949 - Korean (DBCS)
|
|
* \c 950 - Traditional Chinese (DBCS)
|
|
*/
|
|
#define _CODE_PAGE 437
|
|
#endif
|
|
|
|
#ifndef _USE_LFN
|
|
/** \c _USE_LFN switches the support of long file name (LFN).
|
|
*
|
|
* \c 0: Disable LFN support. \c _MAX_LFN has no effect.
|
|
* \c 1: Enable LFN with static working buffer on the BSS. Always thread-unsafe.
|
|
* \c 2: Enable LFN with dynamic working buffer on the STACK.
|
|
* \c 3: Enable LFN with dynamic working buffer on the HEAP.
|
|
*
|
|
* To enable LFN, the Unicode handling functions (<tt>option/unicode.c</tt>)
|
|
* must be added to the project. The working buffer occupies
|
|
* <tt>(_MAX_LFN + 1) * 2</tt> bytes, and 608 more bytes with exFAT enabled.
|
|
* \c _MAX_LFN can be in the range from 12 to 255. It should be set to 255 to
|
|
* support the full-featured LFN operations. When using the stack for the
|
|
* working buffer, take care of stack overflow. When using the heap memory for
|
|
* the working buffer, the memory management functions, \c ff_memalloc() and
|
|
* \c ff_memfree(), must be added to the project.
|
|
*/
|
|
#define _USE_LFN 3
|
|
#endif
|
|
#ifndef _MAX_LFN
|
|
#define _MAX_LFN 255
|
|
#endif
|
|
|
|
#ifndef _LFN_UNICODE
|
|
/** This option switches the character encoding in the API
|
|
* (\c 0: ANSI/OEM or \c 1: UTF-16).
|
|
*
|
|
* To use a Unicode string for the path name, enable LFN and set \c _LFN_UNICODE
|
|
* to \c 1.
|
|
* This option also affects the behavior of the string I/O functions.
|
|
*/
|
|
#define _LFN_UNICODE 0
|
|
#endif
|
|
|
|
#ifndef _STRF_ENCODE
|
|
/** If \c _LFN_UNICODE is set to \c 1, this option selects the character
|
|
* encoding OF THE FILE to be read/written via the string I/O functions:
|
|
* \c f_gets(), \c f_putc(), \c f_puts(), and \c f_printf().
|
|
*
|
|
* \c 0: ANSI/OEM
|
|
* \c 1: UTF-16LE
|
|
* \c 2: UTF-16BE
|
|
* \c 3: UTF-8
|
|
*
|
|
* This option has no effect if \c _LFN_UNICODE is set to \c 0.
|
|
*/
|
|
#define _STRF_ENCODE 0
|
|
#endif
|
|
|
|
#ifndef _FS_RPATH
|
|
/** This option configures the support of relative path.
|
|
*
|
|
* \c 0: Disable relative path and remove related functions.
|
|
* \c 1: Enable relative path. \c f_chdir() and \c f_chdrive() are available.
|
|
* \c 2: \c f_getcwd() is available in addition to \c 1.
|
|
*/
|
|
#define _FS_RPATH 2
|
|
#endif
|
|
|
|
/** @} */
|
|
/*----------------------------------------------------------------------------*/
|
|
/** \name Drive/Volume Configuration
|
|
* @{
|
|
*/
|
|
|
|
#ifndef _VOLUMES
|
|
/** Number of volumes (logical drives) to be used. */
|
|
#define _VOLUMES 1
|
|
#endif
|
|
|
|
#ifndef _STR_VOLUME_ID
|
|
/** \c _STR_VOLUME_ID switches the string support of volume ID.
|
|
* If \c _STR_VOLUME_ID is set to \c 1, pre-defined strings can also be used as
|
|
* drive number in the path name. \c _VOLUME_STRS defines the drive ID strings
|
|
* for each logical drive. The number of items must be equal to \c _VOLUMES.
|
|
* The valid characters for the drive ID strings are: A-Z and 0-9.
|
|
*/
|
|
#define _STR_VOLUME_ID 0
|
|
#endif
|
|
#ifndef _VOLUME_STRS
|
|
#define _VOLUME_STRS "RAM","NAND","CF","SD","SD2","USB","USB2","USB3"
|
|
#endif
|
|
|
|
#ifndef _MULTI_PARTITION
|
|
/** This option switches support of multi-partition on a physical drive.
|
|
* By default (0), each logical drive number is bound to the same physical drive
|
|
* number and only an FAT volume found on the physical drive will be mounted.
|
|
* When multi-partition is enabled (1), each logical drive number can be bound to
|
|
* arbitrary physical drive and partition listed in the VolToPart[]. Also f_fdisk()
|
|
* funciton will be available.
|
|
*/
|
|
#define _MULTI_PARTITION 0
|
|
#endif
|
|
|
|
#ifndef _MIN_SS
|
|
/** These options configure the range of sector size to be supported (512, 1024,
|
|
* 2048, or 4096). Always set both to 512 for most systems, all types of memory
|
|
* cards and harddisk. But a larger value may be required for on-board flash
|
|
* memory and some types of optical media. When \c _MAX_SS is larger than
|
|
* \c _MIN_SS, FatFs is configured to variable sector size and the
|
|
* \c GET_SECTOR_SIZE command must be implemented in \c disk_ioctl().
|
|
*/
|
|
#define _MIN_SS 512
|
|
#endif
|
|
#ifndef _MAX_SS
|
|
#define _MAX_SS 512
|
|
#endif
|
|
|
|
#ifndef _USE_TRIM
|
|
/** This option switches the support of ATA-TRIM
|
|
* (\c 0: disable or \c 1: enable).
|
|
*
|
|
* To enable the Trim function, the \c CTRL_TRIM command should also be
|
|
* implemented in \c disk_ioctl().
|
|
*/
|
|
#define _USE_TRIM 0
|
|
#endif
|
|
|
|
#ifndef _FS_NOFSINFO
|
|
/** If you need to know the correct free space on the FAT32 volume, set the bit
|
|
* 0 of this option, and the \c f_getfree() function will force a full FAT scan
|
|
* on the first time after a volume mount. The bit 1 controls the use of the
|
|
* last allocated cluster number.
|
|
*
|
|
* bit 0=0: Use the free cluster count in FSINFO if available.
|
|
* bit 0=1: Do not trust the free cluster count in FSINFO.
|
|
* bit 1=0: Use the last allocated cluster number in FSINFO if available.
|
|
* bit 1=1: Do not trust the last allocated cluster number in FSINFO.
|
|
*/
|
|
#define _FS_NOFSINFO 3
|
|
#endif
|
|
|
|
/** @} */
|
|
/*----------------------------------------------------------------------------*/
|
|
/** \name System Configuration
|
|
* @{
|
|
*/
|
|
|
|
#ifndef _FS_TINY
|
|
/** This option switches the tiny buffer configuration
|
|
* (\c 0: normal or \c 1: tiny).
|
|
*
|
|
* With the tiny configuration, the size of a file object (FIL) is reduced to
|
|
* \c _MAX_SS bytes. Instead of the private sector buffer eliminated from the
|
|
* file object, a common sector buffer in the file system object (FATFS) is used
|
|
* for the file data transfer.
|
|
*/
|
|
#define _FS_TINY 0
|
|
#endif
|
|
|
|
#ifndef _FS_EXFAT
|
|
/** This option switches the support of the exFAT file system
|
|
* (\c 0: disable or \c 1: enable).
|
|
*
|
|
* With exFAT enabled, LFN also needs to be enabled (\c _USE_LFN >= 1).
|
|
* Note that enabling exFAT discards C89 compatibility.
|
|
*/
|
|
#define _FS_EXFAT 1
|
|
#endif
|
|
|
|
#ifndef _FS_NORTC
|
|
/** The option \c _FS_NORTC switches the timestamp function. If the system does
|
|
* not have any RTC function or if a valid timestamp is not needed, set
|
|
* \c _FS_NORTC to \c 1 to disable the timestamp function. All the objects
|
|
* modified by FatFs will have a fixed timestamp defined by \c _NORTC_MON,
|
|
* \c _NORTC_MDAY, and \c _NORTC_YEAR in local time.
|
|
* To enable the timestamp function (\c _FS_NORTC set to \c 0), \c get_fattime()
|
|
* needs to be added to the project to get the current time from a real-time
|
|
* clock. \c _NORTC_MON, \c _NORTC_MDAY, and \c _NORTC_YEAR have no effect.
|
|
* These options have no effect with a read-only configuration (\c _FS_READONLY
|
|
* set to \c 1).
|
|
*/
|
|
#define _FS_NORTC (!RTC_CONF_INIT)
|
|
#endif
|
|
#ifndef _NORTC_MON
|
|
#define _NORTC_MON 1
|
|
#endif
|
|
#ifndef _NORTC_MDAY
|
|
#define _NORTC_MDAY 1
|
|
#endif
|
|
#ifndef _NORTC_YEAR
|
|
#define _NORTC_YEAR 2016
|
|
#endif
|
|
|
|
#ifndef _FS_LOCK
|
|
/** The option \c _FS_LOCK switches the file lock function controlling duplicate
|
|
* file open and illegal operations on the open objects. This option must be set
|
|
* to \c 0 if \c _FS_READONLY is \c 1.
|
|
*
|
|
* \c 0: Disable the file lock function. To avoid volume corruption, the
|
|
* application program should avoid illegal open, remove, and rename on
|
|
* the open objects.
|
|
* \c >0: Enable the file lock function. The value defines how many
|
|
* files/sub-directories can be opened simultaneously under file lock
|
|
* control. Note that the file lock control is independent of
|
|
* re-entrancy.
|
|
*/
|
|
#define _FS_LOCK 0
|
|
#endif
|
|
|
|
#ifndef _FS_REENTRANT
|
|
/** The option \c _FS_REENTRANT switches the re-entrancy (thread-safe) of the
|
|
* FatFs module itself. Note that, regardless of this option, file access to
|
|
* different volumes is always re-entrant, and the volume control functions,
|
|
* \c f_mount(), \c f_mkfs(), and \c f_fdisk(), are always non-re-entrant. Only
|
|
* file/directory access to the same volume is under control of this function.
|
|
*
|
|
* \c 0: Disable re-entrancy. \c _FS_TIMEOUT and \c _SYNC_t have no effect.
|
|
* \c 1: Enable re-entrancy. The user-provided synchronization handlers,
|
|
* \c ff_req_grant(), \c ff_rel_grant(), \c ff_del_syncobj(), and
|
|
* \c ff_cre_syncobj(), must also be added to the project. Samples are
|
|
* available in <tt>option/syscall.c</tt>.
|
|
*
|
|
* \c _FS_TIMEOUT defines the timeout period in unit of time tick.
|
|
* \c _SYNC_t defines the OS-dependent sync object type, e.g. \c HANDLE, \c ID,
|
|
* \c OS_EVENT*, \c SemaphoreHandle_t, etc. A header file for the OS definitions
|
|
* needs to be included somewhere in the scope of <tt>ff.h</tt>.
|
|
*/
|
|
#define _FS_REENTRANT 0
|
|
#endif
|
|
#ifndef _FS_TIMEOUT
|
|
#define _FS_TIMEOUT 1000
|
|
#endif
|
|
#ifndef _SYNC_t
|
|
#define _SYNC_t HANDLE
|
|
#endif
|
|
|
|
/** @} */
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
#endif /* FFCONF_H_ */
|
|
|
|
/**
|
|
* @}
|
|
* @}
|
|
*/
|