Some library needed for things? Licence unknown

Dependents:   LEDSign_SimpleSD

Committer:
TBSliver
Date:
Sun Jul 29 10:07:38 2012 +0000
Revision:
0:e4324838bc6f
[mbed] converted /LEDSign_SimpleSD/FatFileSystem

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TBSliver 0:e4324838bc6f 1 /*-----------------------------------------------------------------------*/
TBSliver 0:e4324838bc6f 2 /* Low level disk I/O module skeleton for FatFs (C)ChaN, 2007 */
TBSliver 0:e4324838bc6f 3 /*-----------------------------------------------------------------------*/
TBSliver 0:e4324838bc6f 4 /* This is a stub disk I/O module that acts as front end of the existing */
TBSliver 0:e4324838bc6f 5 /* disk I/O modules and attach it to FatFs module with common interface. */
TBSliver 0:e4324838bc6f 6 /*-----------------------------------------------------------------------*/
TBSliver 0:e4324838bc6f 7
TBSliver 0:e4324838bc6f 8 #include "diskio.h"
TBSliver 0:e4324838bc6f 9 #include <stdio.h>
TBSliver 0:e4324838bc6f 10 #include <string.h>
TBSliver 0:e4324838bc6f 11 #include "FATFileSystem.h"
TBSliver 0:e4324838bc6f 12
TBSliver 0:e4324838bc6f 13 #include "mbed.h"
TBSliver 0:e4324838bc6f 14
TBSliver 0:e4324838bc6f 15 DSTATUS disk_initialize (
TBSliver 0:e4324838bc6f 16 BYTE drv /* Physical drive nmuber (0..) */
TBSliver 0:e4324838bc6f 17 )
TBSliver 0:e4324838bc6f 18 {
TBSliver 0:e4324838bc6f 19 FFSDEBUG("disk_initialize on drv [%d]\n", drv);
TBSliver 0:e4324838bc6f 20 return (DSTATUS)FATFileSystem::_ffs[drv]->disk_initialize();
TBSliver 0:e4324838bc6f 21 }
TBSliver 0:e4324838bc6f 22
TBSliver 0:e4324838bc6f 23 DSTATUS disk_status (
TBSliver 0:e4324838bc6f 24 BYTE drv /* Physical drive nmuber (0..) */
TBSliver 0:e4324838bc6f 25 )
TBSliver 0:e4324838bc6f 26 {
TBSliver 0:e4324838bc6f 27 FFSDEBUG("disk_status on drv [%d]\n", drv);
TBSliver 0:e4324838bc6f 28 return (DSTATUS)FATFileSystem::_ffs[drv]->disk_status();
TBSliver 0:e4324838bc6f 29 }
TBSliver 0:e4324838bc6f 30
TBSliver 0:e4324838bc6f 31 DRESULT disk_read (
TBSliver 0:e4324838bc6f 32 BYTE drv, /* Physical drive nmuber (0..) */
TBSliver 0:e4324838bc6f 33 BYTE *buff, /* Data buffer to store read data */
TBSliver 0:e4324838bc6f 34 DWORD sector, /* Sector address (LBA) */
TBSliver 0:e4324838bc6f 35 BYTE count /* Number of sectors to read (1..255) */
TBSliver 0:e4324838bc6f 36 )
TBSliver 0:e4324838bc6f 37 {
TBSliver 0:e4324838bc6f 38 FFSDEBUG("disk_read(sector %d, count %d) on drv [%d]\n", sector, count, drv);
TBSliver 0:e4324838bc6f 39 for(DWORD s=sector; s<sector+count; s++) {
TBSliver 0:e4324838bc6f 40 FFSDEBUG(" disk_read(sector %d)\n", s);
TBSliver 0:e4324838bc6f 41 int res = FATFileSystem::_ffs[drv]->disk_read((char*)buff, s);
TBSliver 0:e4324838bc6f 42 if(res) {
TBSliver 0:e4324838bc6f 43 return RES_PARERR;
TBSliver 0:e4324838bc6f 44 }
TBSliver 0:e4324838bc6f 45 buff += 512;
TBSliver 0:e4324838bc6f 46 }
TBSliver 0:e4324838bc6f 47 return RES_OK;
TBSliver 0:e4324838bc6f 48 }
TBSliver 0:e4324838bc6f 49
TBSliver 0:e4324838bc6f 50 #if _READONLY == 0
TBSliver 0:e4324838bc6f 51 DRESULT disk_write (
TBSliver 0:e4324838bc6f 52 BYTE drv, /* Physical drive nmuber (0..) */
TBSliver 0:e4324838bc6f 53 const BYTE *buff, /* Data to be written */
TBSliver 0:e4324838bc6f 54 DWORD sector, /* Sector address (LBA) */
TBSliver 0:e4324838bc6f 55 BYTE count /* Number of sectors to write (1..255) */
TBSliver 0:e4324838bc6f 56 )
TBSliver 0:e4324838bc6f 57 {
TBSliver 0:e4324838bc6f 58 FFSDEBUG("disk_write(sector %d, count %d) on drv [%d]\n", sector, count, drv);
TBSliver 0:e4324838bc6f 59 for(DWORD s=sector; s<sector+count; s++) {
TBSliver 0:e4324838bc6f 60 FFSDEBUG(" disk_write(sector %d)\n", s);
TBSliver 0:e4324838bc6f 61 int res = FATFileSystem::_ffs[drv]->disk_write((char*)buff, s);
TBSliver 0:e4324838bc6f 62 if(res) {
TBSliver 0:e4324838bc6f 63 return RES_PARERR;
TBSliver 0:e4324838bc6f 64 }
TBSliver 0:e4324838bc6f 65 buff += 512;
TBSliver 0:e4324838bc6f 66 }
TBSliver 0:e4324838bc6f 67 return RES_OK;
TBSliver 0:e4324838bc6f 68 }
TBSliver 0:e4324838bc6f 69 #endif /* _READONLY */
TBSliver 0:e4324838bc6f 70
TBSliver 0:e4324838bc6f 71 DRESULT disk_ioctl (
TBSliver 0:e4324838bc6f 72 BYTE drv, /* Physical drive nmuber (0..) */
TBSliver 0:e4324838bc6f 73 BYTE ctrl, /* Control code */
TBSliver 0:e4324838bc6f 74 void *buff /* Buffer to send/receive control data */
TBSliver 0:e4324838bc6f 75 )
TBSliver 0:e4324838bc6f 76 {
TBSliver 0:e4324838bc6f 77 FFSDEBUG("disk_ioctl(%d)\n", ctrl);
TBSliver 0:e4324838bc6f 78 switch(ctrl) {
TBSliver 0:e4324838bc6f 79 case CTRL_SYNC:
TBSliver 0:e4324838bc6f 80 if(FATFileSystem::_ffs[drv] == NULL) {
TBSliver 0:e4324838bc6f 81 return RES_NOTRDY;
TBSliver 0:e4324838bc6f 82 } else if(FATFileSystem::_ffs[drv]->disk_sync()) {
TBSliver 0:e4324838bc6f 83 return RES_ERROR;
TBSliver 0:e4324838bc6f 84 }
TBSliver 0:e4324838bc6f 85 return RES_OK;
TBSliver 0:e4324838bc6f 86 case GET_SECTOR_COUNT:
TBSliver 0:e4324838bc6f 87 if(FATFileSystem::_ffs[drv] == NULL) {
TBSliver 0:e4324838bc6f 88 return RES_NOTRDY;
TBSliver 0:e4324838bc6f 89 } else {
TBSliver 0:e4324838bc6f 90 int res = FATFileSystem::_ffs[drv]->disk_sectors();
TBSliver 0:e4324838bc6f 91 if(res > 0) {
TBSliver 0:e4324838bc6f 92 *((DWORD*)buff) = res; // minimum allowed
TBSliver 0:e4324838bc6f 93 return RES_OK;
TBSliver 0:e4324838bc6f 94 } else {
TBSliver 0:e4324838bc6f 95 return RES_ERROR;
TBSliver 0:e4324838bc6f 96 }
TBSliver 0:e4324838bc6f 97 }
TBSliver 0:e4324838bc6f 98 case GET_BLOCK_SIZE:
TBSliver 0:e4324838bc6f 99 *((DWORD*)buff) = 1; // default when not known
TBSliver 0:e4324838bc6f 100 return RES_OK;
TBSliver 0:e4324838bc6f 101
TBSliver 0:e4324838bc6f 102 }
TBSliver 0:e4324838bc6f 103 return RES_PARERR;
TBSliver 0:e4324838bc6f 104 }
TBSliver 0:e4324838bc6f 105