SD Card Interface class. Log raw data bytes to memory addresses of your choice, or format the card and use the FAT file system to write files.

Dependencies:   mbed

Committer:
Blaze513
Date:
Sat Aug 07 18:32:30 2010 +0000
Revision:
1:94c648931f84
Child:
2:716abfa4a4d0

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Blaze513 1:94c648931f84 1 /*-----------------------------------------------------------------------*/
Blaze513 1:94c648931f84 2 /* Low level disk I/O module skeleton for FatFs (C)ChaN, 2007 */
Blaze513 1:94c648931f84 3 /*-----------------------------------------------------------------------*/
Blaze513 1:94c648931f84 4 /* This is a stub disk I/O module that acts as front end of the existing */
Blaze513 1:94c648931f84 5 /* disk I/O modules and attach it to FatFs module with common interface. */
Blaze513 1:94c648931f84 6 /*-----------------------------------------------------------------------*/
Blaze513 1:94c648931f84 7
Blaze513 1:94c648931f84 8 #include "diskio.h"
Blaze513 1:94c648931f84 9
Blaze513 1:94c648931f84 10 DSTATUS disk_initialize(BYTE drv)
Blaze513 1:94c648931f84 11 {
Blaze513 1:94c648931f84 12 if (FATFileSystem::DriveArray[drv] != NULL)
Blaze513 1:94c648931f84 13 {
Blaze513 1:94c648931f84 14 return (DSTATUS)FATFileSystem::DriveArray[drv]->disk_initialize();
Blaze513 1:94c648931f84 15 }
Blaze513 1:94c648931f84 16 else
Blaze513 1:94c648931f84 17 {
Blaze513 1:94c648931f84 18 return STA_NOINIT;
Blaze513 1:94c648931f84 19 }
Blaze513 1:94c648931f84 20 }
Blaze513 1:94c648931f84 21
Blaze513 1:94c648931f84 22 DSTATUS disk_status(BYTE drv)
Blaze513 1:94c648931f84 23 {
Blaze513 1:94c648931f84 24 if (FATFileSystem::DriveArray[drv] != NULL)
Blaze513 1:94c648931f84 25 {
Blaze513 1:94c648931f84 26 return (DSTATUS)FATFileSystem::DriveArray[drv]->disk_status();
Blaze513 1:94c648931f84 27 }
Blaze513 1:94c648931f84 28 else
Blaze513 1:94c648931f84 29 {
Blaze513 1:94c648931f84 30 return STA_NOINIT;
Blaze513 1:94c648931f84 31 }
Blaze513 1:94c648931f84 32 }
Blaze513 1:94c648931f84 33
Blaze513 1:94c648931f84 34 DRESULT disk_read(BYTE drv, BYTE* buff, DWORD sector, BYTE count)
Blaze513 1:94c648931f84 35 {
Blaze513 1:94c648931f84 36 if (FATFileSystem::DriveArray[drv] != NULL)
Blaze513 1:94c648931f84 37 {
Blaze513 1:94c648931f84 38 return (DRESULT)FATFileSystem::DriveArray[drv]->disk_read((unsigned char*)buff,
Blaze513 1:94c648931f84 39 (unsigned long)sector, (unsigned char)count);
Blaze513 1:94c648931f84 40 }
Blaze513 1:94c648931f84 41 else
Blaze513 1:94c648931f84 42 {
Blaze513 1:94c648931f84 43 return RES_NOTRDY;
Blaze513 1:94c648931f84 44 }
Blaze513 1:94c648931f84 45 }
Blaze513 1:94c648931f84 46
Blaze513 1:94c648931f84 47 #if _READONLY == 0
Blaze513 1:94c648931f84 48 DRESULT disk_write(BYTE drv, const BYTE* buff, DWORD sector, BYTE count)
Blaze513 1:94c648931f84 49 {
Blaze513 1:94c648931f84 50 if (FATFileSystem::DriveArray[drv] != NULL)
Blaze513 1:94c648931f84 51 {
Blaze513 1:94c648931f84 52 return (DRESULT)FATFileSystem::DriveArray[drv]->disk_write((const unsigned char*)buff,
Blaze513 1:94c648931f84 53 (unsigned long)sector, (unsigned char)count);
Blaze513 1:94c648931f84 54 }
Blaze513 1:94c648931f84 55 else
Blaze513 1:94c648931f84 56 {
Blaze513 1:94c648931f84 57 return RES_NOTRDY;
Blaze513 1:94c648931f84 58 }
Blaze513 1:94c648931f84 59 }
Blaze513 1:94c648931f84 60 #endif
Blaze513 1:94c648931f84 61
Blaze513 1:94c648931f84 62 DRESULT disk_ioctl(BYTE drv, BYTE ctrl, void* buff)
Blaze513 1:94c648931f84 63 {
Blaze513 1:94c648931f84 64 switch (ctrl)
Blaze513 1:94c648931f84 65 {
Blaze513 1:94c648931f84 66 case CTRL_SYNC:
Blaze513 1:94c648931f84 67 if (FATFileSystem::DriveArray[drv] != NULL)
Blaze513 1:94c648931f84 68 {
Blaze513 1:94c648931f84 69 return (DRESULT)FATFileSystem::DriveArray[drv]->disk_sync();
Blaze513 1:94c648931f84 70 }
Blaze513 1:94c648931f84 71 else
Blaze513 1:94c648931f84 72 {
Blaze513 1:94c648931f84 73 return RES_NOTRDY;
Blaze513 1:94c648931f84 74 }
Blaze513 1:94c648931f84 75
Blaze513 1:94c648931f84 76 case GET_SECTOR_SIZE:
Blaze513 1:94c648931f84 77 if (FATFileSystem::DriveArray[drv] != NULL)
Blaze513 1:94c648931f84 78 {
Blaze513 1:94c648931f84 79 WORD Result = FATFileSystem::DriveArray[drv]->disk_sector_size();
Blaze513 1:94c648931f84 80 if (Result > 0)
Blaze513 1:94c648931f84 81 {
Blaze513 1:94c648931f84 82 *((WORD*)buff) = Result;
Blaze513 1:94c648931f84 83 return RES_OK;
Blaze513 1:94c648931f84 84 }
Blaze513 1:94c648931f84 85 else
Blaze513 1:94c648931f84 86 {
Blaze513 1:94c648931f84 87 return RES_ERROR;
Blaze513 1:94c648931f84 88 }
Blaze513 1:94c648931f84 89 }
Blaze513 1:94c648931f84 90 else
Blaze513 1:94c648931f84 91 {
Blaze513 1:94c648931f84 92 return RES_NOTRDY;
Blaze513 1:94c648931f84 93 }
Blaze513 1:94c648931f84 94
Blaze513 1:94c648931f84 95 case GET_SECTOR_COUNT:
Blaze513 1:94c648931f84 96 if (FATFileSystem::DriveArray[drv] != NULL)
Blaze513 1:94c648931f84 97 {
Blaze513 1:94c648931f84 98 DWORD Result = FATFileSystem::DriveArray[drv]->disk_sector_count();
Blaze513 1:94c648931f84 99 if (Result > 0)
Blaze513 1:94c648931f84 100 {
Blaze513 1:94c648931f84 101 *((DWORD*)buff) = Result;
Blaze513 1:94c648931f84 102 return RES_OK;
Blaze513 1:94c648931f84 103 }
Blaze513 1:94c648931f84 104 else
Blaze513 1:94c648931f84 105 {
Blaze513 1:94c648931f84 106 return RES_ERROR;
Blaze513 1:94c648931f84 107 }
Blaze513 1:94c648931f84 108 }
Blaze513 1:94c648931f84 109 else
Blaze513 1:94c648931f84 110 {
Blaze513 1:94c648931f84 111 return RES_NOTRDY;
Blaze513 1:94c648931f84 112 }
Blaze513 1:94c648931f84 113
Blaze513 1:94c648931f84 114 case GET_BLOCK_SIZE:
Blaze513 1:94c648931f84 115 if (FATFileSystem::DriveArray[drv] != NULL)
Blaze513 1:94c648931f84 116 {
Blaze513 1:94c648931f84 117 DWORD Result = FATFileSystem::DriveArray[drv]->disk_block_size();
Blaze513 1:94c648931f84 118 if (Result > 0)
Blaze513 1:94c648931f84 119 {
Blaze513 1:94c648931f84 120 *((DWORD*)buff) = Result;
Blaze513 1:94c648931f84 121 return RES_OK;
Blaze513 1:94c648931f84 122 }
Blaze513 1:94c648931f84 123 else
Blaze513 1:94c648931f84 124 {
Blaze513 1:94c648931f84 125 return RES_ERROR;
Blaze513 1:94c648931f84 126 }
Blaze513 1:94c648931f84 127 }
Blaze513 1:94c648931f84 128 else
Blaze513 1:94c648931f84 129 {
Blaze513 1:94c648931f84 130 return RES_NOTRDY;
Blaze513 1:94c648931f84 131 }
Blaze513 1:94c648931f84 132
Blaze513 1:94c648931f84 133 default:
Blaze513 1:94c648931f84 134 return RES_PARERR;
Blaze513 1:94c648931f84 135 }
Blaze513 1:94c648931f84 136 }