Some library needed for things? Licence unknown

Dependents:   LEDSign_SimpleSD

Committer:
TBSliver
Date:
Sun Jul 29 10:07:38 2012 +0000
Revision:
0:e4324838bc6f
[mbed] converted /LEDSign_SimpleSD/FatFileSystem

Who changed what in which revision?

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