#ifndef _FFCONF
#define _FFCONF 80960		/**< Revision ID								*/
/**
 *****************************************************************************
 * \addtogroup 	FatFs FatFs
 * \{
 * \defgroup 	Conf Configuration
 * \brief		FatFs configuration
 * \{
 *
 * \brief		FAT file system module configuration file
 *
 * \file		ffconf.h
 * \version		R0.10
 * \date		2013-10-02
 * \author		ChaN
 *
 * \attention
 * CAUTION! Do not forget to make clean the project after any changes to
 * the configuration options.
 *
 *****************************************************************************
 * @copyright
 * @{
 *
 * Copyright &copy; 2013, ChaN, all right reserved.
 *
 * FatFs module is a generic FAT file system module for small embedded
 * systems.
 * This is a free software that opened for education, research and commercial
 * developments under license policy of following terms.
 *
 * * The FatFs module is a free software and there is NO WARRANTY.
 * * No restriction on use. You can use, modify and redistribute it for
 *   personal, non-profit or commercial products UNDER YOUR RESPONSIBILITY.
 * * Redistributions of source code must retain the above copyright notice.
 *
 * @}
 *****************************************************************************
 */

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/**
 * \defgroup 	FatFs_Core_Conf_FuncBuff Functions and Buffer
 * \brief		Functions and Buffer Configurations
 * \{
 */

/**
 * \brief	When _FS_TINY is set to 1, FatFs uses the sector buffer in the
 *			file system object instead of the sector buffer in the individual
 *			file object for file data transfer. This reduces memory
 *			consumption 512 bytes each file object.
 *
 * Value:
 * \arg 0:	Normal
 * \arg 1:	Tiny
 */
#define	_FS_TINY		0

/**
 * \brief	Setting _FS_READONLY to 1 defines read only configuration. This
 *			removes writing functions, f_write(), f_sync(), f_unlink(),
 *			f_mkdir(), f_chmod(), f_rename(), f_truncate() and useless
 *			f_getfree().
 *
 * Value:
 * \arg 0:	Read/Write
 * \arg 1:	Read only
 */
#define _FS_READONLY	0

/**
 * \brief	The _FS_MINIMIZE option defines minimization level to remove API
 *			functions.
 *
 * Value:
 * \arg 0:	All basic functions are enabled.
 * \arg 1:	f_stat(), f_getfree(), f_unlink(), f_mkdir(), f_chmod(),
 *			f_utime(), f_truncate() and f_rename() function are removed.
 * \arg 2:	f_opendir(), f_readdir() and f_closedir() are removed in
 *			addition to 1.
 * \arg 3:	f_lseek() function is removed in addition to 2.
 */
#define _FS_MINIMIZE	0

/**
 * \brief	To enable string functions, set _USE_STRFUNC to 1 or 2.
 *
 * Value:
 * \arg 0:	Disable
 * \arg 1:	Enable
 * \arg 2:	Enable
 */
#define	_USE_STRFUNC	1

/**
 * \brief	To enable f_mkfs() function, set _USE_MKFS to 1 and set
 *			#_FS_READONLY to 0.
 *
 * Value:
 * \arg 0:	Disable
 * \arg 1:	Enable
 */
#define	_USE_MKFS		1

/**
 * \brief	To enable fast seek feature, set _USE_FASTSEEK to 1.
 *
 * Value:
 * \arg 0:	Disable
 * \arg 1:	Enable
 */
#define	_USE_FASTSEEK	0

/**
 * \brief	To enable volume label functions, set _USE_LABEL to 1.
 *
 * Value:
 * \arg 0:	Disable
 * \arg 1:	Enable
 */
#define _USE_LABEL		0

/**
 * \brief	To enable f_forward() function, set _USE_FORWARD to 1 and set
 *			_FS_TINY to 1.
 *
 * Value:
 * \arg 0:	Disable
 * \arg 1:	Enable
 */
#define	_USE_FORWARD	0

/**
 * \}
 */

/**
 * \defgroup 	FatFs_Core_Conf_LocalNamespace Locale and Namespace
 * \brief		Locale and Namespace Configurations
 * \{
 */

/**
 * \brief	The _CODE_PAGE specifies the OEM code page to be used on the
 *			target system. Incorrect setting of the code page can cause a
 *			file open failure.
 *
 * Value:
 * \arg 932:	Japanese Shift-JIS (DBCS, OEM, Windows)
 * \arg 936:	Simplified Chinese GBK (DBCS, OEM, Windows)
 * \arg 949:	Korean (DBCS, OEM, Windows)
 * \arg 950:	Traditional Chinese Big5 (DBCS, OEM, Windows)
 * \arg 1250:	Central Europe (Windows)
 * \arg 1251:	Cyrillic (Windows)
 * \arg 1252:	Latin 1 (Windows)
 * \arg 1253:	Greek (Windows)
 * \arg 1254:	Turkish (Windows)
 * \arg 1255:	Hebrew (Windows)
 * \arg 1256:	Arabic (Windows)
 * \arg 1257:	Baltic (Windows)
 * \arg 1258:	Vietnam (OEM, Windows)
 * \arg 437:	U.S. (OEM)
 * \arg 720:	Arabic (OEM)
 * \arg 737:	Greek (OEM)
 * \arg 775:	Baltic (OEM)
 * \arg 850:	Multilingual Latin 1 (OEM)
 * \arg 858:	Multilingual Latin 1 + Euro (OEM)
 * \arg 852:	Latin 2 (OEM)
 * \arg 855:	Cyrillic (OEM)
 * \arg 866:	Russian (OEM)
 * \arg 857:	Turkish (OEM)
 * \arg 862:	Hebrew (OEM)
 * \arg 874:	Thai (OEM, Windows)
 * \arg 1:		ASCII (Valid for only non-LFN cfg.)
 */
#define _CODE_PAGE		1252


/**
 * \brief	The _USE_LFN option switches the LFN feature.
 *
 * Value:
 * \arg 0:	Disable LFN feature. _MAX_LFN has no effect.
 * \arg 1:	Enable LFN with static working buffer on the BSS. Always NOT
 *			reentrant.
 * \arg 2:	Enable LFN with dynamic working buffer on the STACK.
 * \arg 3:	Enable LFN with dynamic working buffer on the HEAP.
 *
 * \note
 * To enable LFN feature, Unicode handling functions ff_convert() and
 * ff_wtoupper() function must be added to the project.
 * The LFN working buffer occupies (#_MAX_LFN + 1) * 2 bytes. When use stack
 * for the working buffer, take care on stack overflow. When use heap memory
 * for the working buffer, memory management functions, ff_memalloc() and
 * ff_memfree(), must be added to the project.
 */
#define	_USE_LFN		0

/**
 * \brief	Maximum LFN length to handle
 *
 * Value:
 * \arg 12 to 255
 */
#define	_MAX_LFN		255


/**
 * \brief	To switch the character encoding on the FatFs API to Unicode,
 *			enable LFN feature and set _LFN_UNICODE to 1.
 *
 * Value:
 * \arg 0:	ANSI/OEM
 * \arg 1:	Unicode
 */
#define	_LFN_UNICODE	0


/**
 * \brief	When Unicode API is enabled, character encoding on the all FatFs
 *			API is switched to Unicode. This option selects the character
 *			encoding on the file to be read/written via string functions,
 *			f_gets(), f_putc(), f_puts and f_printf().\n
 *			This option has no effect when _LFN_UNICODE is 0.
 *
 * Value:
 * \arg 0:	ANSI/OEM
 * \arg 1:	UTF-16LE
 * \arg 2:	UTF-16BE
 * \arg 3:	UTF-8
 */
#define _STRF_ENCODE	3


/**
 * \brief	The _FS_RPATH option configures relative path feature.
 *
 * Value:
 * \arg 0:	Disable relative path feature and remove related functions.
 * \arg 1:	Enable relative path. f_chdrive() and f_chdir() function are
 *			available.
 * \arg 2:	f_getcwd() function is available in addition to 1.
 *
 * \note
 * Note that output of the f_readdir() function is affected by this option.
 */
#define _FS_RPATH		0

/**
 * \}
 */

/**
 * \defgroup 	FatFs_Core_Conf_DriveVolume Drive/Volume
 * \brief		Drive/Volume Configurations
 * \{
 */

/**
 * \brief	Number of volumes (logical drives) to be used.
 */
#define _VOLUMES		1


/**
 * \brief	When set to 0, each volume is bound to the same physical drive
 *			number and it can mount only first primaly partition. When it is
 *			set to 1, each volume is tied to the partitions listed in
 *			VolToPart[].
 *
 * Value:
 * \arg 0:	Single partition
 * \arg 1:	Enable multiple partition
 */
#define	_MULTI_PARTITION	0


/**
 * \brief	Maximum sector size to be handled.
 *			Always set 512 for memory card and hard disk but a larger value
 *			may be required for on-board flash memory, floppy disk and optical
 *			disk.\n
 *			When _MAX_SS is larger than 512, it configures FatFs to variable
 *			sector size and GET_SECTOR_SIZE command must be implemented to the
 *			disk_ioctl() function.
 *
 * Value:
 * \arg 512
 * \arg 1024
 * \arg 2048
 * \arg 4096
 */
#define	_MAX_SS		512


/**
 * \brief	To enable sector erase feature, set _USE_ERASE to 1. Also
 *			CTRL_ERASE_SECTOR command should be added to the disk_ioctl()
 *			function.
 *
 * Value:
 * \arg 0:	Disable
 * \arg 1:	Enable
 */
#define	_USE_ERASE	0


/**
 * \brief	If you need to know the correct free space on the FAT32 volume,
 *			set this option to 1 and f_getfree() function at first time after
 *			volume mount will force a full FAT scan.
 *
 * Value:
 * \arg 0:	Load all informations in the FSINFO if available.
 * \arg 1:	Do not trust free cluster count in the FSINFO.
 */
#define _FS_NOFSINFO	0

/**
 * \}
 */

/**
 * \defgroup 	FatFs_Core_Conf_System System
 * \brief		System Configurations
 * \note
 * A header file that defines sync object types on the O/S, such as
 * windows.h, ucos_ii.h and semphr.h, must be included prior to ff.h.
 * \{
 */

/**
 * \brief	The _WORD_ACCESS option is an only platform dependent option. It
 *			defines which access method is used to the word data on the FAT
 *			volume.
 *
 * Value:
 * \arg 0:	Byte-by-byte access. Always compatible with all platforms.
 * \arg 1:	Word access. Do not choose this unless under both the following
 *			conditions.
 *
 * \note
 * \arg Byte order on the memory is little-endian.
 * \arg Address miss-aligned word access is always allowed for all
 *		instructions.
 *
 * \note
 * If it is the case, _WORD_ACCESS can also be set to 1 to improve performance
 * and reduce code size.
 */
#define _WORD_ACCESS	0

/**
 * \brief	The _FS_REENTRANT option switches the re-entrancy (thread safe)
 *			of the FatFs module.
 *
 * Value:
 * \arg 0:	Disable re-entrancy. _SYNC_t and _FS_TIMEOUT have no effect.
 * \arg 1:	Enable re-entrancy. Also user provided synchronization handlers,
 *			#ff_req_grant(), ff_rel_grant(), ff_del_syncobj() and
 *			#ff_cre_syncobj() function must be added to the project.
 */
#define _FS_REENTRANT	1

/**
 * \brief	Timeout period in unit of time ticks
 */
#define _FS_TIMEOUT		1000

/**
 * \brief	O/S dependent type of sync object. e.g. HANDLE, OS_EVENT*, ID
 *			and etc..
 */
#define	_SYNC_t			void *

/**
 * \brief	To enable file lock control feature, set _FS_LOCK to 1 or greater.
 *			The value defines how many files can be opened simultaneously.
 *
 * Value:
 * \arg 0:		Disable
 * \arg >=1:	Enable
 */
#define	_FS_LOCK	8

#ifdef __cplusplus
}
#endif /* __cplusplus */

/**
 * \}
 */

/**
 * \}
 * \}
 */

#endif /* _FFCONFIG */
