Geo Electronics "Geo Counter" / Mbed 2 deprecated GEO_SHOW2ME_F411RE_CDY

Dependencies:   SDFileSystem_HelloWorld mbed FATFileSystem

Committer:
Charles David Young
Date:
Sun Nov 04 18:44:51 2018 -0700
Revision:
0:aa13e1c335cd
create new repo for show2me

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Charles David Young 0:aa13e1c335cd 1 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 2 /* Low level disk I/O module skeleton for FatFs (C)ChaN, 2014 */
Charles David Young 0:aa13e1c335cd 3 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 4 /* If a working storage control module is available, it should be */
Charles David Young 0:aa13e1c335cd 5 /* attached to the FatFs via a glue function rather than modifying it. */
Charles David Young 0:aa13e1c335cd 6 /* This is an example of glue functions to attach various exsisting */
Charles David Young 0:aa13e1c335cd 7 /* storage control modules to the FatFs module with a defined API. */
Charles David Young 0:aa13e1c335cd 8 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 9
Charles David Young 0:aa13e1c335cd 10 #include "diskio.h"
Charles David Young 0:aa13e1c335cd 11 #include "mbed_debug.h"
Charles David Young 0:aa13e1c335cd 12 #include "FATFileSystem.h"
Charles David Young 0:aa13e1c335cd 13
Charles David Young 0:aa13e1c335cd 14 using namespace mbed;
Charles David Young 0:aa13e1c335cd 15
Charles David Young 0:aa13e1c335cd 16 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 17 /* Get Drive Status */
Charles David Young 0:aa13e1c335cd 18 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 19
Charles David Young 0:aa13e1c335cd 20 DSTATUS disk_status (
Charles David Young 0:aa13e1c335cd 21 BYTE pdrv /* Physical drive nmuber to identify the drive */
Charles David Young 0:aa13e1c335cd 22 )
Charles David Young 0:aa13e1c335cd 23 {
Charles David Young 0:aa13e1c335cd 24 debug_if(FFS_DBG, "disk_status on pdrv [%d]\n", pdrv);
Charles David Young 0:aa13e1c335cd 25 return (DSTATUS)FATFileSystem::_ffs[pdrv]->disk_status();
Charles David Young 0:aa13e1c335cd 26 }
Charles David Young 0:aa13e1c335cd 27
Charles David Young 0:aa13e1c335cd 28 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 29 /* Inidialize a Drive */
Charles David Young 0:aa13e1c335cd 30 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 31
Charles David Young 0:aa13e1c335cd 32 DSTATUS disk_initialize (
Charles David Young 0:aa13e1c335cd 33 BYTE pdrv /* Physical drive nmuber to identify the drive */
Charles David Young 0:aa13e1c335cd 34 )
Charles David Young 0:aa13e1c335cd 35 {
Charles David Young 0:aa13e1c335cd 36 debug_if(FFS_DBG, "disk_initialize on pdrv [%d]\n", pdrv);
Charles David Young 0:aa13e1c335cd 37 return (DSTATUS)FATFileSystem::_ffs[pdrv]->disk_initialize();
Charles David Young 0:aa13e1c335cd 38 }
Charles David Young 0:aa13e1c335cd 39
Charles David Young 0:aa13e1c335cd 40 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 41 /* Read Sector(s) */
Charles David Young 0:aa13e1c335cd 42 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 43
Charles David Young 0:aa13e1c335cd 44 DRESULT disk_read (
Charles David Young 0:aa13e1c335cd 45 BYTE pdrv, /* Physical drive nmuber to identify the drive */
Charles David Young 0:aa13e1c335cd 46 BYTE* buff, /* Data buffer to store read data */
Charles David Young 0:aa13e1c335cd 47 DWORD sector, /* Sector address in LBA */
Charles David Young 0:aa13e1c335cd 48 UINT count /* Number of sectors to read */
Charles David Young 0:aa13e1c335cd 49 )
Charles David Young 0:aa13e1c335cd 50 {
Charles David Young 0:aa13e1c335cd 51 debug_if(FFS_DBG, "disk_read(sector %d, count %d) on pdrv [%d]\n", sector, count, pdrv);
Charles David Young 0:aa13e1c335cd 52 if (FATFileSystem::_ffs[pdrv]->disk_read((uint8_t*)buff, sector, count))
Charles David Young 0:aa13e1c335cd 53 return RES_PARERR;
Charles David Young 0:aa13e1c335cd 54 else
Charles David Young 0:aa13e1c335cd 55 return RES_OK;
Charles David Young 0:aa13e1c335cd 56 }
Charles David Young 0:aa13e1c335cd 57
Charles David Young 0:aa13e1c335cd 58 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 59 /* Write Sector(s) */
Charles David Young 0:aa13e1c335cd 60 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 61
Charles David Young 0:aa13e1c335cd 62 #if _USE_WRITE
Charles David Young 0:aa13e1c335cd 63 DRESULT disk_write (
Charles David Young 0:aa13e1c335cd 64 BYTE pdrv, /* Physical drive nmuber to identify the drive */
Charles David Young 0:aa13e1c335cd 65 const BYTE* buff, /* Data to be written */
Charles David Young 0:aa13e1c335cd 66 DWORD sector, /* Sector address in LBA */
Charles David Young 0:aa13e1c335cd 67 UINT count /* Number of sectors to write */
Charles David Young 0:aa13e1c335cd 68 )
Charles David Young 0:aa13e1c335cd 69 {
Charles David Young 0:aa13e1c335cd 70 debug_if(FFS_DBG, "disk_write(sector %d, count %d) on pdrv [%d]\n", sector, count, pdrv);
Charles David Young 0:aa13e1c335cd 71 if (FATFileSystem::_ffs[pdrv]->disk_write((uint8_t*)buff, sector, count))
Charles David Young 0:aa13e1c335cd 72 return RES_PARERR;
Charles David Young 0:aa13e1c335cd 73 else
Charles David Young 0:aa13e1c335cd 74 return RES_OK;
Charles David Young 0:aa13e1c335cd 75 }
Charles David Young 0:aa13e1c335cd 76 #endif
Charles David Young 0:aa13e1c335cd 77
Charles David Young 0:aa13e1c335cd 78 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 79 /* Miscellaneous Functions */
Charles David Young 0:aa13e1c335cd 80 /*-----------------------------------------------------------------------*/
Charles David Young 0:aa13e1c335cd 81
Charles David Young 0:aa13e1c335cd 82 #if _USE_IOCTL
Charles David Young 0:aa13e1c335cd 83 DRESULT disk_ioctl (
Charles David Young 0:aa13e1c335cd 84 BYTE pdrv, /* Physical drive nmuber (0..) */
Charles David Young 0:aa13e1c335cd 85 BYTE cmd, /* Control code */
Charles David Young 0:aa13e1c335cd 86 void* buff /* Buffer to send/receive control data */
Charles David Young 0:aa13e1c335cd 87 )
Charles David Young 0:aa13e1c335cd 88 {
Charles David Young 0:aa13e1c335cd 89 debug_if(FFS_DBG, "disk_ioctl(%d)\n", cmd);
Charles David Young 0:aa13e1c335cd 90 switch(cmd) {
Charles David Young 0:aa13e1c335cd 91 case CTRL_SYNC:
Charles David Young 0:aa13e1c335cd 92 if(FATFileSystem::_ffs[pdrv] == NULL) {
Charles David Young 0:aa13e1c335cd 93 return RES_NOTRDY;
Charles David Young 0:aa13e1c335cd 94 } else if(FATFileSystem::_ffs[pdrv]->disk_sync()) {
Charles David Young 0:aa13e1c335cd 95 return RES_ERROR;
Charles David Young 0:aa13e1c335cd 96 }
Charles David Young 0:aa13e1c335cd 97 return RES_OK;
Charles David Young 0:aa13e1c335cd 98 case GET_SECTOR_COUNT:
Charles David Young 0:aa13e1c335cd 99 if(FATFileSystem::_ffs[pdrv] == NULL) {
Charles David Young 0:aa13e1c335cd 100 return RES_NOTRDY;
Charles David Young 0:aa13e1c335cd 101 } else {
Charles David Young 0:aa13e1c335cd 102 DWORD res = FATFileSystem::_ffs[pdrv]->disk_sectors();
Charles David Young 0:aa13e1c335cd 103 if(res > 0) {
Charles David Young 0:aa13e1c335cd 104 *((DWORD*)buff) = res; // minimum allowed
Charles David Young 0:aa13e1c335cd 105 return RES_OK;
Charles David Young 0:aa13e1c335cd 106 } else {
Charles David Young 0:aa13e1c335cd 107 return RES_ERROR;
Charles David Young 0:aa13e1c335cd 108 }
Charles David Young 0:aa13e1c335cd 109 }
Charles David Young 0:aa13e1c335cd 110 case GET_BLOCK_SIZE:
Charles David Young 0:aa13e1c335cd 111 *((DWORD*)buff) = 1; // default when not known
Charles David Young 0:aa13e1c335cd 112 return RES_OK;
Charles David Young 0:aa13e1c335cd 113
Charles David Young 0:aa13e1c335cd 114 }
Charles David Young 0:aa13e1c335cd 115 return RES_PARERR;
Charles David Young 0:aa13e1c335cd 116 }
Charles David Young 0:aa13e1c335cd 117 #endif