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 /* mbed Microcontroller Library - FATDirHandle
TBSliver 0:e4324838bc6f 2 * Copyright (c) 2008, sford
TBSliver 0:e4324838bc6f 3 */
TBSliver 0:e4324838bc6f 4
TBSliver 0:e4324838bc6f 5 #include <stdio.h>
TBSliver 0:e4324838bc6f 6 #include <stdlib.h>
TBSliver 0:e4324838bc6f 7 #include <string.h>
TBSliver 0:e4324838bc6f 8 #include "ff.h"
TBSliver 0:e4324838bc6f 9 #include "FATDirHandle.h"
TBSliver 0:e4324838bc6f 10 #include "FATFileSystem.h"
TBSliver 0:e4324838bc6f 11
TBSliver 0:e4324838bc6f 12 namespace mbed {
TBSliver 0:e4324838bc6f 13
TBSliver 0:e4324838bc6f 14 FATDirHandle::FATDirHandle(const FATFS_DIR &the_dir) {
TBSliver 0:e4324838bc6f 15 dir = the_dir;
TBSliver 0:e4324838bc6f 16 }
TBSliver 0:e4324838bc6f 17
TBSliver 0:e4324838bc6f 18 int FATDirHandle::closedir() {
TBSliver 0:e4324838bc6f 19 delete this;
TBSliver 0:e4324838bc6f 20 return 0;
TBSliver 0:e4324838bc6f 21 }
TBSliver 0:e4324838bc6f 22
TBSliver 0:e4324838bc6f 23 struct dirent *FATDirHandle::readdir() {
TBSliver 0:e4324838bc6f 24 FILINFO finfo;
TBSliver 0:e4324838bc6f 25
TBSliver 0:e4324838bc6f 26 #if _USE_LFN
TBSliver 0:e4324838bc6f 27 finfo.lfname = cur_entry.d_name;
TBSliver 0:e4324838bc6f 28 finfo.lfsize = sizeof(cur_entry.d_name);
TBSliver 0:e4324838bc6f 29 #endif // _USE_LFN
TBSliver 0:e4324838bc6f 30
TBSliver 0:e4324838bc6f 31 FRESULT res = f_readdir(&dir, &finfo);
TBSliver 0:e4324838bc6f 32
TBSliver 0:e4324838bc6f 33 #if _USE_LFN
TBSliver 0:e4324838bc6f 34 if(res != 0 || finfo.fname[0]==0) {
TBSliver 0:e4324838bc6f 35 return NULL;
TBSliver 0:e4324838bc6f 36 } else {
TBSliver 0:e4324838bc6f 37 if(cur_entry.d_name[0]==0) {
TBSliver 0:e4324838bc6f 38 // No long filename so use short filename.
TBSliver 0:e4324838bc6f 39 memcpy(cur_entry.d_name, finfo.fname, sizeof(finfo.fname));
TBSliver 0:e4324838bc6f 40 }
TBSliver 0:e4324838bc6f 41 return &cur_entry;
TBSliver 0:e4324838bc6f 42 }
TBSliver 0:e4324838bc6f 43 #else
TBSliver 0:e4324838bc6f 44 if(res != 0 || finfo.fname[0]==0) {
TBSliver 0:e4324838bc6f 45 return NULL;
TBSliver 0:e4324838bc6f 46 } else {
TBSliver 0:e4324838bc6f 47 memcpy(cur_entry.d_name, finfo.fname, sizeof(finfo.fname));
TBSliver 0:e4324838bc6f 48 return &cur_entry;
TBSliver 0:e4324838bc6f 49 }
TBSliver 0:e4324838bc6f 50 #endif /* _USE_LFN */
TBSliver 0:e4324838bc6f 51 }
TBSliver 0:e4324838bc6f 52
TBSliver 0:e4324838bc6f 53 void FATDirHandle::rewinddir() {
TBSliver 0:e4324838bc6f 54 dir.index = 0;
TBSliver 0:e4324838bc6f 55 }
TBSliver 0:e4324838bc6f 56
TBSliver 0:e4324838bc6f 57 off_t FATDirHandle::telldir() {
TBSliver 0:e4324838bc6f 58 return dir.index;
TBSliver 0:e4324838bc6f 59 }
TBSliver 0:e4324838bc6f 60
TBSliver 0:e4324838bc6f 61 void FATDirHandle::seekdir(off_t location) {
TBSliver 0:e4324838bc6f 62 dir.index = location;
TBSliver 0:e4324838bc6f 63 }
TBSliver 0:e4324838bc6f 64
TBSliver 0:e4324838bc6f 65 }
TBSliver 0:e4324838bc6f 66