/* * Copyright (c) 2016, Benoît Thébaudeau * 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 (option/unicode.c) * must be added to the project. The working buffer occupies * (_MAX_LFN + 1) * 2 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 option/syscall.c. * * \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 ff.h. */ #define _FS_REENTRANT 0 #endif #ifndef _FS_TIMEOUT #define _FS_TIMEOUT 1000 #endif #ifndef _SYNC_t #define _SYNC_t HANDLE #endif /** @} */ /*----------------------------------------------------------------------------*/ #endif /* FFCONF_H_ */ /** * @} * @} */