SD

Committer:
mikekelly99
Date:
Tue Nov 17 17:03:36 2020 +0000
Revision:
0:6db20bbdc767
Wow, never committed the code once so first and final commit, code produces the lat and long values as well as speed.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mikekelly99 0:6db20bbdc767 1 /* mbed Microcontroller Library
mikekelly99 0:6db20bbdc767 2 * Copyright (c) 2006-2012 ARM Limited
mikekelly99 0:6db20bbdc767 3 *
mikekelly99 0:6db20bbdc767 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
mikekelly99 0:6db20bbdc767 5 * of this software and associated documentation files (the "Software"), to deal
mikekelly99 0:6db20bbdc767 6 * in the Software without restriction, including without limitation the rights
mikekelly99 0:6db20bbdc767 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
mikekelly99 0:6db20bbdc767 8 * copies of the Software, and to permit persons to whom the Software is
mikekelly99 0:6db20bbdc767 9 * furnished to do so, subject to the following conditions:
mikekelly99 0:6db20bbdc767 10 *
mikekelly99 0:6db20bbdc767 11 * The above copyright notice and this permission notice shall be included in
mikekelly99 0:6db20bbdc767 12 * all copies or substantial portions of the Software.
mikekelly99 0:6db20bbdc767 13 *
mikekelly99 0:6db20bbdc767 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
mikekelly99 0:6db20bbdc767 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
mikekelly99 0:6db20bbdc767 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
mikekelly99 0:6db20bbdc767 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
mikekelly99 0:6db20bbdc767 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
mikekelly99 0:6db20bbdc767 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
mikekelly99 0:6db20bbdc767 20 * SOFTWARE.
mikekelly99 0:6db20bbdc767 21 */
mikekelly99 0:6db20bbdc767 22 #include "ff.h"
mikekelly99 0:6db20bbdc767 23 #include "ffconf.h"
mikekelly99 0:6db20bbdc767 24 #include "mbed_debug.h"
mikekelly99 0:6db20bbdc767 25
mikekelly99 0:6db20bbdc767 26 #include "FATFileHandle.h"
mikekelly99 0:6db20bbdc767 27
mikekelly99 0:6db20bbdc767 28 FATFileHandle::FATFileHandle(FIL fh) {
mikekelly99 0:6db20bbdc767 29 _fh = fh;
mikekelly99 0:6db20bbdc767 30 }
mikekelly99 0:6db20bbdc767 31
mikekelly99 0:6db20bbdc767 32 int FATFileHandle::close() {
mikekelly99 0:6db20bbdc767 33 int retval = f_close(&_fh);
mikekelly99 0:6db20bbdc767 34 delete this;
mikekelly99 0:6db20bbdc767 35 return retval;
mikekelly99 0:6db20bbdc767 36 }
mikekelly99 0:6db20bbdc767 37
mikekelly99 0:6db20bbdc767 38 ssize_t FATFileHandle::write(const void* buffer, size_t length) {
mikekelly99 0:6db20bbdc767 39 UINT n;
mikekelly99 0:6db20bbdc767 40 FRESULT res = f_write(&_fh, buffer, length, &n);
mikekelly99 0:6db20bbdc767 41 if (res) {
mikekelly99 0:6db20bbdc767 42 debug_if(FFS_DBG, "f_write() failed: %d", res);
mikekelly99 0:6db20bbdc767 43 return -1;
mikekelly99 0:6db20bbdc767 44 }
mikekelly99 0:6db20bbdc767 45 return n;
mikekelly99 0:6db20bbdc767 46 }
mikekelly99 0:6db20bbdc767 47
mikekelly99 0:6db20bbdc767 48 ssize_t FATFileHandle::read(void* buffer, size_t length) {
mikekelly99 0:6db20bbdc767 49 debug_if(FFS_DBG, "read(%d)\n", length);
mikekelly99 0:6db20bbdc767 50 UINT n;
mikekelly99 0:6db20bbdc767 51 FRESULT res = f_read(&_fh, buffer, length, &n);
mikekelly99 0:6db20bbdc767 52 if (res) {
mikekelly99 0:6db20bbdc767 53 debug_if(FFS_DBG, "f_read() failed: %d\n", res);
mikekelly99 0:6db20bbdc767 54 return -1;
mikekelly99 0:6db20bbdc767 55 }
mikekelly99 0:6db20bbdc767 56 return n;
mikekelly99 0:6db20bbdc767 57 }
mikekelly99 0:6db20bbdc767 58
mikekelly99 0:6db20bbdc767 59 int FATFileHandle::isatty() {
mikekelly99 0:6db20bbdc767 60 return 0;
mikekelly99 0:6db20bbdc767 61 }
mikekelly99 0:6db20bbdc767 62
mikekelly99 0:6db20bbdc767 63 off_t FATFileHandle::lseek(off_t position, int whence) {
mikekelly99 0:6db20bbdc767 64 if (whence == SEEK_END) {
mikekelly99 0:6db20bbdc767 65 position += _fh.fsize;
mikekelly99 0:6db20bbdc767 66 } else if(whence==SEEK_CUR) {
mikekelly99 0:6db20bbdc767 67 position += _fh.fptr;
mikekelly99 0:6db20bbdc767 68 }
mikekelly99 0:6db20bbdc767 69 FRESULT res = f_lseek(&_fh, position);
mikekelly99 0:6db20bbdc767 70 if (res) {
mikekelly99 0:6db20bbdc767 71 debug_if(FFS_DBG, "lseek failed: %d\n", res);
mikekelly99 0:6db20bbdc767 72 return -1;
mikekelly99 0:6db20bbdc767 73 } else {
mikekelly99 0:6db20bbdc767 74 debug_if(FFS_DBG, "lseek OK, returning %i\n", _fh.fptr);
mikekelly99 0:6db20bbdc767 75 return _fh.fptr;
mikekelly99 0:6db20bbdc767 76 }
mikekelly99 0:6db20bbdc767 77 }
mikekelly99 0:6db20bbdc767 78
mikekelly99 0:6db20bbdc767 79 int FATFileHandle::fsync() {
mikekelly99 0:6db20bbdc767 80 FRESULT res = f_sync(&_fh);
mikekelly99 0:6db20bbdc767 81 if (res) {
mikekelly99 0:6db20bbdc767 82 debug_if(FFS_DBG, "f_sync() failed: %d\n", res);
mikekelly99 0:6db20bbdc767 83 return -1;
mikekelly99 0:6db20bbdc767 84 }
mikekelly99 0:6db20bbdc767 85 return 0;
mikekelly99 0:6db20bbdc767 86 }
mikekelly99 0:6db20bbdc767 87
mikekelly99 0:6db20bbdc767 88 off_t FATFileHandle::flen() {
mikekelly99 0:6db20bbdc767 89 return _fh.fsize;
mikekelly99 0:6db20bbdc767 90 }