Satellite Observers Workbench. NOT yet complete, just published for forum posters to \"cherry pick\" pieces of code as requiered as an example.
flash/FatFS/diskio.h@0:0a841b89d614, 2010-10-11 (annotated)
- Committer:
- AjK
- Date:
- Mon Oct 11 10:34:55 2010 +0000
- Revision:
- 0:0a841b89d614
Totally Alpha quality as this project isn\t completed. Just publishing it as it answers many questions asked in the forums
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AjK | 0:0a841b89d614 | 1 | /*----------------------------------------------------------------------- |
AjK | 0:0a841b89d614 | 2 | / Low level disk interface modlue include file (C)ChaN, 2010 |
AjK | 0:0a841b89d614 | 3 | /-----------------------------------------------------------------------*/ |
AjK | 0:0a841b89d614 | 4 | |
AjK | 0:0a841b89d614 | 5 | #ifndef _DISKIO |
AjK | 0:0a841b89d614 | 6 | #define _DISKIO |
AjK | 0:0a841b89d614 | 7 | |
AjK | 0:0a841b89d614 | 8 | #define _READONLY 0 /* 1: Remove write functions */ |
AjK | 0:0a841b89d614 | 9 | #define _USE_IOCTL 1 /* 1: Use disk_ioctl fucntion */ |
AjK | 0:0a841b89d614 | 10 | |
AjK | 0:0a841b89d614 | 11 | #include "integer.h" |
AjK | 0:0a841b89d614 | 12 | |
AjK | 0:0a841b89d614 | 13 | #ifdef __cplusplus |
AjK | 0:0a841b89d614 | 14 | extern "C" { |
AjK | 0:0a841b89d614 | 15 | #endif |
AjK | 0:0a841b89d614 | 16 | |
AjK | 0:0a841b89d614 | 17 | /* Status of Disk Functions */ |
AjK | 0:0a841b89d614 | 18 | typedef BYTE DSTATUS; |
AjK | 0:0a841b89d614 | 19 | |
AjK | 0:0a841b89d614 | 20 | /* Results of Disk Functions */ |
AjK | 0:0a841b89d614 | 21 | typedef enum { |
AjK | 0:0a841b89d614 | 22 | RES_OK = 0, /* 0: Successful */ |
AjK | 0:0a841b89d614 | 23 | RES_ERROR, /* 1: R/W Error */ |
AjK | 0:0a841b89d614 | 24 | RES_WRPRT, /* 2: Write Protected */ |
AjK | 0:0a841b89d614 | 25 | RES_NOTRDY, /* 3: Not Ready */ |
AjK | 0:0a841b89d614 | 26 | RES_PARERR /* 4: Invalid Parameter */ |
AjK | 0:0a841b89d614 | 27 | } DRESULT; |
AjK | 0:0a841b89d614 | 28 | |
AjK | 0:0a841b89d614 | 29 | |
AjK | 0:0a841b89d614 | 30 | /*---------------------------------------*/ |
AjK | 0:0a841b89d614 | 31 | /* Prototypes for disk control functions */ |
AjK | 0:0a841b89d614 | 32 | |
AjK | 0:0a841b89d614 | 33 | int assign_drives (int, int); |
AjK | 0:0a841b89d614 | 34 | DSTATUS disk_initialize (BYTE); |
AjK | 0:0a841b89d614 | 35 | DSTATUS disk_status (BYTE); |
AjK | 0:0a841b89d614 | 36 | DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE); |
AjK | 0:0a841b89d614 | 37 | DWORD get_fattime(void); |
AjK | 0:0a841b89d614 | 38 | #if _READONLY == 0 |
AjK | 0:0a841b89d614 | 39 | DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE); |
AjK | 0:0a841b89d614 | 40 | #endif |
AjK | 0:0a841b89d614 | 41 | DRESULT disk_ioctl (BYTE, BYTE, void*); |
AjK | 0:0a841b89d614 | 42 | |
AjK | 0:0a841b89d614 | 43 | |
AjK | 0:0a841b89d614 | 44 | |
AjK | 0:0a841b89d614 | 45 | /* Disk Status Bits (DSTATUS) */ |
AjK | 0:0a841b89d614 | 46 | |
AjK | 0:0a841b89d614 | 47 | #define STA_NOINIT 0x01 /* Drive not initialized */ |
AjK | 0:0a841b89d614 | 48 | #define STA_NODISK 0x02 /* No medium in the drive */ |
AjK | 0:0a841b89d614 | 49 | #define STA_PROTECT 0x04 /* Write protected */ |
AjK | 0:0a841b89d614 | 50 | |
AjK | 0:0a841b89d614 | 51 | |
AjK | 0:0a841b89d614 | 52 | /* Command code for disk_ioctrl fucntion */ |
AjK | 0:0a841b89d614 | 53 | |
AjK | 0:0a841b89d614 | 54 | /* Generic command (defined for FatFs) */ |
AjK | 0:0a841b89d614 | 55 | #define CTRL_SYNC 0 /* Flush disk cache (for write functions) */ |
AjK | 0:0a841b89d614 | 56 | #define GET_SECTOR_COUNT 1 /* Get media size (for only f_mkfs()) */ |
AjK | 0:0a841b89d614 | 57 | #define GET_SECTOR_SIZE 2 /* Get sector size (for multiple sector size (_MAX_SS >= 1024)) */ |
AjK | 0:0a841b89d614 | 58 | #define GET_BLOCK_SIZE 3 /* Get erase block size (for only f_mkfs()) */ |
AjK | 0:0a841b89d614 | 59 | #define CTRL_ERASE_SECTOR 4 /* Force erased a block of sectors (for only _USE_ERASE) */ |
AjK | 0:0a841b89d614 | 60 | |
AjK | 0:0a841b89d614 | 61 | /* Generic command */ |
AjK | 0:0a841b89d614 | 62 | #define CTRL_POWER 5 /* Get/Set power status */ |
AjK | 0:0a841b89d614 | 63 | #define CTRL_LOCK 6 /* Lock/Unlock media removal */ |
AjK | 0:0a841b89d614 | 64 | #define CTRL_EJECT 7 /* Eject media */ |
AjK | 0:0a841b89d614 | 65 | |
AjK | 0:0a841b89d614 | 66 | /* MMC/SDC specific ioctl command */ |
AjK | 0:0a841b89d614 | 67 | #define MMC_GET_TYPE 10 /* Get card type */ |
AjK | 0:0a841b89d614 | 68 | #define MMC_GET_CSD 11 /* Get CSD */ |
AjK | 0:0a841b89d614 | 69 | #define MMC_GET_CID 12 /* Get CID */ |
AjK | 0:0a841b89d614 | 70 | #define MMC_GET_OCR 13 /* Get OCR */ |
AjK | 0:0a841b89d614 | 71 | #define MMC_GET_SDSTAT 14 /* Get SD status */ |
AjK | 0:0a841b89d614 | 72 | |
AjK | 0:0a841b89d614 | 73 | /* ATA/CF specific ioctl command */ |
AjK | 0:0a841b89d614 | 74 | #define ATA_GET_REV 20 /* Get F/W revision */ |
AjK | 0:0a841b89d614 | 75 | #define ATA_GET_MODEL 21 /* Get model name */ |
AjK | 0:0a841b89d614 | 76 | #define ATA_GET_SN 22 /* Get serial number */ |
AjK | 0:0a841b89d614 | 77 | |
AjK | 0:0a841b89d614 | 78 | /* NAND specific ioctl command */ |
AjK | 0:0a841b89d614 | 79 | #define NAND_FORMAT 30 /* Create physical format */ |
AjK | 0:0a841b89d614 | 80 | |
AjK | 0:0a841b89d614 | 81 | #ifdef __cplusplus |
AjK | 0:0a841b89d614 | 82 | } |
AjK | 0:0a841b89d614 | 83 | #endif |
AjK | 0:0a841b89d614 | 84 | |
AjK | 0:0a841b89d614 | 85 | #endif |