Files
tron.asm/libs/BSP/diskio.h
2016-01-12 17:49:26 +01:00

142 lines
4.8 KiB
C

#ifndef _DISKIO_DEFINED
#define _DISKIO_DEFINED
/**
*****************************************************************************
* @addtogroup FatFs FatFs
* @{
* @defgroup FatFs_DiskIO Disk IO
* @brief Low level disk I/O module skeleton for FatFs
* @{
*
* \file diskio.c
* \version R0.10
* \date 2013-10-02
* \author ChaN
*
* @brief Low level disk I/O module skeleton for FatFs
* @note If a working storage control module is available, it should
* be attached to the FatFs via a glue function rather than
* modifying it.\n
* This is an example of glue functions to attach various
* exsisting storage control module to the FatFs module with a
* defined API.
*
*****************************************************************************
* @copyright
* @{
*
* Copyright © 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 */
/*----- Header-Files -------------------------------------------------------*/
#include "integer.h"
/*----- Macros -------------------------------------------------------------*/
#define _USE_WRITE 1 /**< 1: Enable disk_write function */
#define _USE_IOCTL 1 /**< 1: Enable disk_ioctl function */
/* Disk Status Bits (DSTATUS) */
#define STA_NOINIT 0x01 /**< Drive not initialized */
#define STA_NODISK 0x02 /**< No medium in the drive */
#define STA_PROTECT 0x04 /**< Write protected */
/* Command code for disk_ioctrl fucntion */
/* Generic command (used by FatFs) */
#define CTRL_SYNC 0 /**< Flush disk cache (for write functions) */
#define GET_SECTOR_COUNT 1 /**< Get media size (for only f_mkfs()) */
#define GET_SECTOR_SIZE 2 /**< Get sector size (for multiple sector
size (_MAX_SS >= 1024)) */
#define GET_BLOCK_SIZE 3 /**< Get erase block size (for only
f_mkfs()) */
#define CTRL_ERASE_SECTOR 4 /**< Force erased a block of sectors (for
only _USE_ERASE) */
/* Generic command (not used by FatFs) */
#define CTRL_POWER 5 /**< Get/Set power status */
#define CTRL_LOCK 6 /**< Lock/Unlock media removal */
#define CTRL_EJECT 7 /**< Eject media */
#define CTRL_FORMAT 8 /**< Create physical format on the media */
/* MMC/SDC specific ioctl command */
#define MMC_GET_TYPE 10 /**< Get card type */
#define MMC_GET_CSD 11 /**< Get CSD */
#define MMC_GET_CID 12 /**< Get CID */
#define MMC_GET_OCR 13 /**< Get OCR */
#define MMC_GET_SDSTAT 14 /**< Get SD status */
/* ATA/CF specific ioctl command */
#define ATA_GET_REV 20 /**< Get F/W revision */
#define ATA_GET_MODEL 21 /**< Get model name */
#define ATA_GET_SN 22 /**< Get serial number */
/* MMC card type flags (MMC_GET_TYPE) */
#define CT_MMC 0x01 /**< MMC ver 3 */
#define CT_SD1 0x02 /**< SD ver 1 */
#define CT_SD2 0x04 /**< SD ver 2 */
#define CT_SDC (CT_SD1|CT_SD2) /**< SD */
#define CT_BLOCK 0x08 /**< Block addressing */
/*----- Data types ---------------------------------------------------------*/
/**
* \brief Status of Disk Functions
* \typedef DSTATUS
*/
typedef BYTE DSTATUS;
/**
* \brief Results of Disk Functions
* \typedef DRESULT
*/
typedef enum {
RES_OK = 0, /**< 0: Successful */
RES_ERROR, /**< 1: R/W Error */
RES_WRPRT, /**< 2: Write Protected */
RES_NOTRDY, /**< 3: Not Ready */
RES_PARERR /**< 4: Invalid Parameter */
} DRESULT;
/*----- Function prototypes ------------------------------------------------*/
DSTATUS disk_initialize (BYTE drv);
DSTATUS disk_status (BYTE drv);
DRESULT disk_read (BYTE drv, BYTE*buff, DWORD sector, UINT count);
#if _USE_WRITE
DRESULT disk_write(BYTE drv, const BYTE *buff, DWORD sector, BYTE count);
#endif /* _USE_WRITE */
#if _USE_IOCTL
DRESULT disk_ioctl (BYTE drv, BYTE cmd, void* buff);
#endif /* _USE_IOCTL */
/*----- Data ---------------------------------------------------------------*/
/*----- Implementation -----------------------------------------------------*/
#ifdef __cplusplus
}
#endif /* __cplusplus */
/**
* \}
* \}
*/
#endif /* _DISKIO_DEFINED */