Web server based weather station using Sparkfun Weather Meters.

Dependencies:   FatFileSystem mbed WeatherMeters SDFileSystem

Committer:
AdamGreen
Date:
Thu Feb 23 21:38:39 2012 +0000
Revision:
0:616601bde9fb

        

Who changed what in which revision?

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