MRD Lab / SpindleBot_1_5b

Dependencies:   MX12 ServoRingBuffer mbed-src

Fork of SpindleBot by MRD Lab

Committer:
labmrd
Date:
Mon Apr 06 21:23:36 2015 +0000
Revision:
4:e44ac08027bd
This is the state of the art before Rod busted in, Kool Aid Man Style, and blew the whole shebang wigitty-wide open.  From now on, we worship at the alter of the Two State Solution as proposed by Dr. Rod Dockter Master of Science.

Who changed what in which revision?

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