A fork of the original SDFileSystem, added only stat() for getting file information.

Dependents:   FRDM_K64F_IOT

Added code to the original SDFileSystem to export the stat() command. It would now be possible to get the FILEINFO struct of a directory entry to get information such as file size, etc.

SDFileSystem2 usage

#include "SDFileSystem.h"
SDFileSystem sd(p5,p6,p7,p8,"sd"); // mosi, miso, sck, cs 

static void cmd_ls(Stream * chp, int argc, char * argv[])
{
   DIR * dp;
   struct dirent * dirp;
   FILINFO fileInfo;
   char dirroot[256];
   
   if (argc >= 1)
       sprintf(dirroot, "/sd/%s", argv[0]);
   else
       sprintf(dirroot, "/sd");
   
   chp->printf("Listing directory [%s]\r\n", dirroot);
   
   dp = opendir(dirroot);			
   while((dirp = readdir(dp)) != NULL)
   {
       if (sd.stat(dirp->d_name, &fileInfo) == 0)
       {
           if (fileInfo.fattrib & AM_DIR )
                   chp->printf("<DIR>\t\t");
           else
                   chp->printf("%ld\t\t", fileInfo.fsize);
       }
       chp->printf("%s\r\n", dirp->d_name);
   }
   closedir(dp);
}
Committer:
vpcola
Date:
Tue Apr 28 16:55:30 2015 +0000
Revision:
0:572d27f56fcd
Added stat() to get file information

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vpcola 0:572d27f56fcd 1 //-----------------------------------------------------------------------
vpcola 0:572d27f56fcd 2 // Low level disk interface modlue include file
vpcola 0:572d27f56fcd 3 //-----------------------------------------------------------------------
vpcola 0:572d27f56fcd 4
vpcola 0:572d27f56fcd 5 #ifndef _DISKIO
vpcola 0:572d27f56fcd 6
vpcola 0:572d27f56fcd 7 #define _READONLY 0 // 1: Remove write functions
vpcola 0:572d27f56fcd 8 #define _USE_IOCTL 1 // 1: Use disk_ioctl fucntion
vpcola 0:572d27f56fcd 9
vpcola 0:572d27f56fcd 10 #include "integer.h"
vpcola 0:572d27f56fcd 11
vpcola 0:572d27f56fcd 12
vpcola 0:572d27f56fcd 13 // Status of Disk Functions
vpcola 0:572d27f56fcd 14 typedef BYTE DSTATUS;
vpcola 0:572d27f56fcd 15
vpcola 0:572d27f56fcd 16 // Results of Disk Functions
vpcola 0:572d27f56fcd 17 typedef enum {
vpcola 0:572d27f56fcd 18 RES_OK = 0, // 0: Successful
vpcola 0:572d27f56fcd 19 RES_ERROR, // 1: R/W Error
vpcola 0:572d27f56fcd 20 RES_WRPRT, // 2: Write Protected
vpcola 0:572d27f56fcd 21 RES_NOTRDY, // 3: Not Ready
vpcola 0:572d27f56fcd 22 RES_PARERR // 4: Invalid Parameter
vpcola 0:572d27f56fcd 23 } DRESULT;
vpcola 0:572d27f56fcd 24
vpcola 0:572d27f56fcd 25
vpcola 0:572d27f56fcd 26 // Prototypes for disk control functions
vpcola 0:572d27f56fcd 27
vpcola 0:572d27f56fcd 28 int assign_drives (int, int);
vpcola 0:572d27f56fcd 29 DSTATUS disk_initialize (BYTE);
vpcola 0:572d27f56fcd 30 DSTATUS disk_status (BYTE);
vpcola 0:572d27f56fcd 31 DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);
vpcola 0:572d27f56fcd 32 #if _READONLY == 0
vpcola 0:572d27f56fcd 33 DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE);
vpcola 0:572d27f56fcd 34 #endif
vpcola 0:572d27f56fcd 35 DRESULT disk_ioctl (BYTE, BYTE, void*);
vpcola 0:572d27f56fcd 36
vpcola 0:572d27f56fcd 37
vpcola 0:572d27f56fcd 38
vpcola 0:572d27f56fcd 39 // Disk Status Bits (DSTATUS)
vpcola 0:572d27f56fcd 40 #define STA_NOINIT 0x01 // Drive not initialized
vpcola 0:572d27f56fcd 41 #define STA_NODISK 0x02 // No medium in the drive
vpcola 0:572d27f56fcd 42 #define STA_PROTECT 0x04 // Write protected
vpcola 0:572d27f56fcd 43
vpcola 0:572d27f56fcd 44
vpcola 0:572d27f56fcd 45 // Command code for disk_ioctrl fucntion
vpcola 0:572d27f56fcd 46
vpcola 0:572d27f56fcd 47 // Generic command (defined for FatFs)
vpcola 0:572d27f56fcd 48 #define CTRL_SYNC 0 // Flush disk cache (for write functions)
vpcola 0:572d27f56fcd 49 #define GET_SECTOR_COUNT 1 // Get media size (for only f_mkfs())
vpcola 0:572d27f56fcd 50 #define GET_SECTOR_SIZE 2 // Get sector size (for multiple sector size (_MAX_SS >= 1024))
vpcola 0:572d27f56fcd 51 #define GET_BLOCK_SIZE 3 // Get erase block size (for only f_mkfs())
vpcola 0:572d27f56fcd 52 #define CTRL_ERASE_SECTOR 4 // Force erased a block of sectors (for only _USE_ERASE)
vpcola 0:572d27f56fcd 53
vpcola 0:572d27f56fcd 54 // Generic command
vpcola 0:572d27f56fcd 55 #define CTRL_POWER 5 // Get/Set power status
vpcola 0:572d27f56fcd 56 #define CTRL_LOCK 6 // Lock/Unlock media removal
vpcola 0:572d27f56fcd 57 #define CTRL_EJECT 7 // Eject media
vpcola 0:572d27f56fcd 58
vpcola 0:572d27f56fcd 59 // MMC/SDC specific ioctl command
vpcola 0:572d27f56fcd 60 #define MMC_GET_TYPE 10 // Get card type
vpcola 0:572d27f56fcd 61 #define MMC_GET_CSD 11 // Get CSD
vpcola 0:572d27f56fcd 62 #define MMC_GET_CID 12 // Get CID
vpcola 0:572d27f56fcd 63 #define MMC_GET_OCR 13 // Get OCR
vpcola 0:572d27f56fcd 64 #define MMC_GET_SDSTAT 14 // Get SD status
vpcola 0:572d27f56fcd 65
vpcola 0:572d27f56fcd 66 // ATA/CF specific ioctl command
vpcola 0:572d27f56fcd 67 #define ATA_GET_REV 20 // Get F/W revision
vpcola 0:572d27f56fcd 68 #define ATA_GET_MODEL 21 // Get model name
vpcola 0:572d27f56fcd 69 #define ATA_GET_SN 22 // Get serial number
vpcola 0:572d27f56fcd 70
vpcola 0:572d27f56fcd 71 // NAND specific ioctl command
vpcola 0:572d27f56fcd 72 #define NAND_FORMAT 30 // Create physical format
vpcola 0:572d27f56fcd 73
vpcola 0:572d27f56fcd 74
vpcola 0:572d27f56fcd 75 #define _DISKIO
vpcola 0:572d27f56fcd 76 #endif