Mark Schwarzer / Mbed 2 deprecated Project_OCE360

Dependencies:   mbed

Committer:
markschwarzer
Date:
Tue Dec 01 14:28:25 2020 +0000
Revision:
0:852fb667f2d6
Start

Who changed what in which revision?

UserRevisionLine numberNew contents of line
markschwarzer 0:852fb667f2d6 1 /* mbed Microcontroller Library
markschwarzer 0:852fb667f2d6 2 * Copyright (c) 2006-2012 ARM Limited
markschwarzer 0:852fb667f2d6 3 *
markschwarzer 0:852fb667f2d6 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
markschwarzer 0:852fb667f2d6 5 * of this software and associated documentation files (the "Software"), to deal
markschwarzer 0:852fb667f2d6 6 * in the Software without restriction, including without limitation the rights
markschwarzer 0:852fb667f2d6 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
markschwarzer 0:852fb667f2d6 8 * copies of the Software, and to permit persons to whom the Software is
markschwarzer 0:852fb667f2d6 9 * furnished to do so, subject to the following conditions:
markschwarzer 0:852fb667f2d6 10 *
markschwarzer 0:852fb667f2d6 11 * The above copyright notice and this permission notice shall be included in
markschwarzer 0:852fb667f2d6 12 * all copies or substantial portions of the Software.
markschwarzer 0:852fb667f2d6 13 *
markschwarzer 0:852fb667f2d6 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
markschwarzer 0:852fb667f2d6 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
markschwarzer 0:852fb667f2d6 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
markschwarzer 0:852fb667f2d6 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
markschwarzer 0:852fb667f2d6 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
markschwarzer 0:852fb667f2d6 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
markschwarzer 0:852fb667f2d6 20 * SOFTWARE.
markschwarzer 0:852fb667f2d6 21 */
markschwarzer 0:852fb667f2d6 22 #include <string.h>
markschwarzer 0:852fb667f2d6 23 #include "ff.h"
markschwarzer 0:852fb667f2d6 24 #include "FATDirHandle.h"
markschwarzer 0:852fb667f2d6 25
markschwarzer 0:852fb667f2d6 26 using namespace mbed;
markschwarzer 0:852fb667f2d6 27
markschwarzer 0:852fb667f2d6 28 FATDirHandle::FATDirHandle(const FATFS_DIR &the_dir) {
markschwarzer 0:852fb667f2d6 29 dir = the_dir;
markschwarzer 0:852fb667f2d6 30 }
markschwarzer 0:852fb667f2d6 31
markschwarzer 0:852fb667f2d6 32 int FATDirHandle::closedir() {
markschwarzer 0:852fb667f2d6 33 int retval = f_closedir(&dir);
markschwarzer 0:852fb667f2d6 34 delete this;
markschwarzer 0:852fb667f2d6 35 return retval;
markschwarzer 0:852fb667f2d6 36 }
markschwarzer 0:852fb667f2d6 37
markschwarzer 0:852fb667f2d6 38 struct dirent *FATDirHandle::readdir() {
markschwarzer 0:852fb667f2d6 39 FILINFO finfo;
markschwarzer 0:852fb667f2d6 40
markschwarzer 0:852fb667f2d6 41 #if _USE_LFN
markschwarzer 0:852fb667f2d6 42 finfo.lfname = cur_entry.d_name;
markschwarzer 0:852fb667f2d6 43 finfo.lfsize = sizeof(cur_entry.d_name);
markschwarzer 0:852fb667f2d6 44 #endif // _USE_LFN
markschwarzer 0:852fb667f2d6 45
markschwarzer 0:852fb667f2d6 46 FRESULT res = f_readdir(&dir, &finfo);
markschwarzer 0:852fb667f2d6 47
markschwarzer 0:852fb667f2d6 48 #if _USE_LFN
markschwarzer 0:852fb667f2d6 49 if(res != 0 || finfo.fname[0]==0) {
markschwarzer 0:852fb667f2d6 50 return NULL;
markschwarzer 0:852fb667f2d6 51 } else {
markschwarzer 0:852fb667f2d6 52 if(cur_entry.d_name[0]==0) {
markschwarzer 0:852fb667f2d6 53 // No long filename so use short filename.
markschwarzer 0:852fb667f2d6 54 memcpy(cur_entry.d_name, finfo.fname, sizeof(finfo.fname));
markschwarzer 0:852fb667f2d6 55 }
markschwarzer 0:852fb667f2d6 56 return &cur_entry;
markschwarzer 0:852fb667f2d6 57 }
markschwarzer 0:852fb667f2d6 58 #else
markschwarzer 0:852fb667f2d6 59 if(res != 0 || finfo.fname[0]==0) {
markschwarzer 0:852fb667f2d6 60 return NULL;
markschwarzer 0:852fb667f2d6 61 } else {
markschwarzer 0:852fb667f2d6 62 memcpy(cur_entry.d_name, finfo.fname, sizeof(finfo.fname));
markschwarzer 0:852fb667f2d6 63 return &cur_entry;
markschwarzer 0:852fb667f2d6 64 }
markschwarzer 0:852fb667f2d6 65 #endif /* _USE_LFN */
markschwarzer 0:852fb667f2d6 66 }
markschwarzer 0:852fb667f2d6 67
markschwarzer 0:852fb667f2d6 68 void FATDirHandle::rewinddir() {
markschwarzer 0:852fb667f2d6 69 dir.index = 0;
markschwarzer 0:852fb667f2d6 70 }
markschwarzer 0:852fb667f2d6 71
markschwarzer 0:852fb667f2d6 72 off_t FATDirHandle::telldir() {
markschwarzer 0:852fb667f2d6 73 return dir.index;
markschwarzer 0:852fb667f2d6 74 }
markschwarzer 0:852fb667f2d6 75
markschwarzer 0:852fb667f2d6 76 void FATDirHandle::seekdir(off_t location) {
markschwarzer 0:852fb667f2d6 77 dir.index = location;
markschwarzer 0:852fb667f2d6 78 }
markschwarzer 0:852fb667f2d6 79
markschwarzer 0:852fb667f2d6 80 ssize_t FATDirHandle::read(struct dirent *ent) {
markschwarzer 0:852fb667f2d6 81 struct dirent *temp = readdir();
markschwarzer 0:852fb667f2d6 82 if (!temp) {
markschwarzer 0:852fb667f2d6 83 return 0;
markschwarzer 0:852fb667f2d6 84 }
markschwarzer 0:852fb667f2d6 85
markschwarzer 0:852fb667f2d6 86 memcpy(ent, temp, sizeof(*ent));
markschwarzer 0:852fb667f2d6 87 return 1;
markschwarzer 0:852fb667f2d6 88 }
markschwarzer 0:852fb667f2d6 89