Versión sin post-procesado del software del VmRideR

Dependencies:   mbed

Committer:
JuanManuelAmador
Date:
Mon Jun 15 15:34:27 2015 +0000
Revision:
0:3d456b8ce449
prueba

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JuanManuelAmador 0:3d456b8ce449 1 /* mbed Microcontroller Library - FATFileHandle
JuanManuelAmador 0:3d456b8ce449 2 * Copyright (c) 2008, sford
JuanManuelAmador 0:3d456b8ce449 3 */
JuanManuelAmador 0:3d456b8ce449 4
JuanManuelAmador 0:3d456b8ce449 5 #include "FATFileHandle.h"
JuanManuelAmador 0:3d456b8ce449 6
JuanManuelAmador 0:3d456b8ce449 7 #include <stdio.h>
JuanManuelAmador 0:3d456b8ce449 8 #include <stdlib.h>
JuanManuelAmador 0:3d456b8ce449 9 #include "ff.h"
JuanManuelAmador 0:3d456b8ce449 10 #include "FATFileSystem.h"
JuanManuelAmador 0:3d456b8ce449 11
JuanManuelAmador 0:3d456b8ce449 12 namespace mbed {
JuanManuelAmador 0:3d456b8ce449 13
JuanManuelAmador 0:3d456b8ce449 14 #if FFSDEBUG_ENABLED
JuanManuelAmador 0:3d456b8ce449 15 static const char *FR_ERRORS[] = {
JuanManuelAmador 0:3d456b8ce449 16 "FR_OK = 0",
JuanManuelAmador 0:3d456b8ce449 17 "FR_NOT_READY",
JuanManuelAmador 0:3d456b8ce449 18 "FR_NO_FILE",
JuanManuelAmador 0:3d456b8ce449 19 "FR_NO_PATH",
JuanManuelAmador 0:3d456b8ce449 20 "FR_INVALID_NAME",
JuanManuelAmador 0:3d456b8ce449 21 "FR_INVALID_DRIVE",
JuanManuelAmador 0:3d456b8ce449 22 "FR_DENIED",
JuanManuelAmador 0:3d456b8ce449 23 "FR_EXIST",
JuanManuelAmador 0:3d456b8ce449 24 "FR_RW_ERROR",
JuanManuelAmador 0:3d456b8ce449 25 "FR_WRITE_PROTECTED",
JuanManuelAmador 0:3d456b8ce449 26 "FR_NOT_ENABLED",
JuanManuelAmador 0:3d456b8ce449 27 "FR_NO_FILESYSTEM",
JuanManuelAmador 0:3d456b8ce449 28 "FR_INVALID_OBJECT",
JuanManuelAmador 0:3d456b8ce449 29 "FR_MKFS_ABORTED"
JuanManuelAmador 0:3d456b8ce449 30 };
JuanManuelAmador 0:3d456b8ce449 31 #endif
JuanManuelAmador 0:3d456b8ce449 32
JuanManuelAmador 0:3d456b8ce449 33 FATFileHandle::FATFileHandle(FIL fh) {
JuanManuelAmador 0:3d456b8ce449 34 _fh = fh;
JuanManuelAmador 0:3d456b8ce449 35 }
JuanManuelAmador 0:3d456b8ce449 36
JuanManuelAmador 0:3d456b8ce449 37 int FATFileHandle::close() {
JuanManuelAmador 0:3d456b8ce449 38 FFSDEBUG("close\n");
JuanManuelAmador 0:3d456b8ce449 39 int retval = f_close(&_fh);
JuanManuelAmador 0:3d456b8ce449 40 delete this;
JuanManuelAmador 0:3d456b8ce449 41 return retval;
JuanManuelAmador 0:3d456b8ce449 42 }
JuanManuelAmador 0:3d456b8ce449 43
JuanManuelAmador 0:3d456b8ce449 44 ssize_t FATFileHandle::write(const void* buffer, size_t length) {
JuanManuelAmador 0:3d456b8ce449 45 FFSDEBUG("write(%d)\n", length);
JuanManuelAmador 0:3d456b8ce449 46 UINT n;
JuanManuelAmador 0:3d456b8ce449 47 FRESULT res = f_write(&_fh, buffer, length, &n);
JuanManuelAmador 0:3d456b8ce449 48 if(res) {
JuanManuelAmador 0:3d456b8ce449 49 FFSDEBUG("f_write() failed (%d, %s)", res, FR_ERRORS[res]);
JuanManuelAmador 0:3d456b8ce449 50 return -1;
JuanManuelAmador 0:3d456b8ce449 51 }
JuanManuelAmador 0:3d456b8ce449 52 return n;
JuanManuelAmador 0:3d456b8ce449 53 }
JuanManuelAmador 0:3d456b8ce449 54
JuanManuelAmador 0:3d456b8ce449 55 ssize_t FATFileHandle::read(void* buffer, size_t length) {
JuanManuelAmador 0:3d456b8ce449 56 FFSDEBUG("read(%d)\n", length);
JuanManuelAmador 0:3d456b8ce449 57 UINT n;
JuanManuelAmador 0:3d456b8ce449 58 FRESULT res = f_read(&_fh, buffer, length, &n);
JuanManuelAmador 0:3d456b8ce449 59 if(res) {
JuanManuelAmador 0:3d456b8ce449 60 FFSDEBUG("f_read() failed (%d, %s)\n", res, FR_ERRORS[res]);
JuanManuelAmador 0:3d456b8ce449 61 return -1;
JuanManuelAmador 0:3d456b8ce449 62 }
JuanManuelAmador 0:3d456b8ce449 63 return n;
JuanManuelAmador 0:3d456b8ce449 64 }
JuanManuelAmador 0:3d456b8ce449 65
JuanManuelAmador 0:3d456b8ce449 66 int FATFileHandle::isatty() {
JuanManuelAmador 0:3d456b8ce449 67 return 0;
JuanManuelAmador 0:3d456b8ce449 68 }
JuanManuelAmador 0:3d456b8ce449 69
JuanManuelAmador 0:3d456b8ce449 70 off_t FATFileHandle::lseek(off_t position, int whence) {
JuanManuelAmador 0:3d456b8ce449 71 FFSDEBUG("lseek(%i,%i)\n",position,whence);
JuanManuelAmador 0:3d456b8ce449 72 if(whence == SEEK_END) {
JuanManuelAmador 0:3d456b8ce449 73 position += _fh.fsize;
JuanManuelAmador 0:3d456b8ce449 74 } else if(whence==SEEK_CUR) {
JuanManuelAmador 0:3d456b8ce449 75 position += _fh.fptr;
JuanManuelAmador 0:3d456b8ce449 76 }
JuanManuelAmador 0:3d456b8ce449 77 FRESULT res = f_lseek(&_fh, position);
JuanManuelAmador 0:3d456b8ce449 78 if(res) {
JuanManuelAmador 0:3d456b8ce449 79 FFSDEBUG("lseek failed (%d, %s)\n", res, FR_ERRORS[res]);
JuanManuelAmador 0:3d456b8ce449 80 return -1;
JuanManuelAmador 0:3d456b8ce449 81 } else {
JuanManuelAmador 0:3d456b8ce449 82 FFSDEBUG("lseek OK, returning %i\n", _fh.fptr);
JuanManuelAmador 0:3d456b8ce449 83 return _fh.fptr;
JuanManuelAmador 0:3d456b8ce449 84 }
JuanManuelAmador 0:3d456b8ce449 85 }
JuanManuelAmador 0:3d456b8ce449 86
JuanManuelAmador 0:3d456b8ce449 87 int FATFileHandle::fsync() {
JuanManuelAmador 0:3d456b8ce449 88 FFSDEBUG("fsync()\n");
JuanManuelAmador 0:3d456b8ce449 89 FRESULT res = f_sync(&_fh);
JuanManuelAmador 0:3d456b8ce449 90 if (res) {
JuanManuelAmador 0:3d456b8ce449 91 FFSDEBUG("f_sync() failed (%d, %s)\n", res, FR_ERRORS[res]);
JuanManuelAmador 0:3d456b8ce449 92 return -1;
JuanManuelAmador 0:3d456b8ce449 93 }
JuanManuelAmador 0:3d456b8ce449 94 return 0;
JuanManuelAmador 0:3d456b8ce449 95 }
JuanManuelAmador 0:3d456b8ce449 96
JuanManuelAmador 0:3d456b8ce449 97 off_t FATFileHandle::flen() {
JuanManuelAmador 0:3d456b8ce449 98 FFSDEBUG("flen\n");
JuanManuelAmador 0:3d456b8ce449 99 return _fh.fsize;
JuanManuelAmador 0:3d456b8ce449 100 }
JuanManuelAmador 0:3d456b8ce449 101
JuanManuelAmador 0:3d456b8ce449 102 } // namespace mbed