Satellite Observers Workbench. NOT yet complete, just published for forum posters to \"cherry pick\" pieces of code as requiered as an example.

Dependencies:   mbed

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?

UserRevisionLine numberNew 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