Dylan Saada / Mbed 2 deprecated telemetre2

Dependencies:   mbed

Committer:
dylancachan
Date:
Wed Apr 15 06:23:18 2015 +0000
Revision:
0:6ce9c65992e5
telemetre

Who changed what in which revision?

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