SD Card Interface class. Log raw data bytes to memory addresses of your choice, or format the card and use the FAT file system to write files.

Dependencies:   mbed

Committer:
Blaze513
Date:
Mon Aug 23 07:12:13 2010 +0000
Revision:
3:210eb67b260c
Parent:
1:94c648931f84
Child:
4:9a5878d316d5

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Blaze513 1:94c648931f84 1 /* mbed Microcontroller Library - FATFileHandle
Blaze513 1:94c648931f84 2 Copyright (c) 2008, sford */
Blaze513 1:94c648931f84 3
Blaze513 3:210eb67b260c 4 //Modified by Thomas Hamilton, Copyright 2010
Blaze513 3:210eb67b260c 5
Blaze513 1:94c648931f84 6 #include "FATFileHandle.h"
Blaze513 1:94c648931f84 7
Blaze513 1:94c648931f84 8 FATFileHandle::FATFileHandle(FAT_FIL InputFilStr)
Blaze513 1:94c648931f84 9 {
Blaze513 1:94c648931f84 10 FileObject = InputFilStr;
Blaze513 1:94c648931f84 11 }
Blaze513 1:94c648931f84 12
Blaze513 1:94c648931f84 13 ssize_t FATFileHandle::write(const void* buffer, size_t length)
Blaze513 1:94c648931f84 14 {
Blaze513 1:94c648931f84 15 UINT ByteWritten;
Blaze513 1:94c648931f84 16 if (f_write(&FileObject, buffer, (UINT)length, &ByteWritten))
Blaze513 1:94c648931f84 17 {
Blaze513 1:94c648931f84 18 return -1;
Blaze513 1:94c648931f84 19 }
Blaze513 1:94c648931f84 20 else
Blaze513 1:94c648931f84 21 {
Blaze513 1:94c648931f84 22 return (ssize_t)ByteWritten;
Blaze513 1:94c648931f84 23 }
Blaze513 1:94c648931f84 24 }
Blaze513 1:94c648931f84 25
Blaze513 1:94c648931f84 26 int FATFileHandle::close()
Blaze513 1:94c648931f84 27 {
Blaze513 1:94c648931f84 28 if (f_close(&FileObject))
Blaze513 1:94c648931f84 29 {
Blaze513 1:94c648931f84 30 return -1;
Blaze513 1:94c648931f84 31 }
Blaze513 1:94c648931f84 32 else
Blaze513 1:94c648931f84 33 {
Blaze513 1:94c648931f84 34 delete this;
Blaze513 1:94c648931f84 35 return 0;
Blaze513 1:94c648931f84 36 }
Blaze513 1:94c648931f84 37 }
Blaze513 1:94c648931f84 38
Blaze513 1:94c648931f84 39 ssize_t FATFileHandle::read(void* buffer, size_t length)
Blaze513 1:94c648931f84 40 {
Blaze513 1:94c648931f84 41 UINT ByteRead;
Blaze513 1:94c648931f84 42 if (f_read(&FileObject, buffer, (UINT)length, &ByteRead))
Blaze513 1:94c648931f84 43 {
Blaze513 1:94c648931f84 44 return -1;
Blaze513 1:94c648931f84 45 }
Blaze513 1:94c648931f84 46 else
Blaze513 1:94c648931f84 47 {
Blaze513 1:94c648931f84 48 return (ssize_t)ByteRead;
Blaze513 1:94c648931f84 49 }
Blaze513 1:94c648931f84 50 }
Blaze513 1:94c648931f84 51
Blaze513 1:94c648931f84 52 int FATFileHandle::isatty()
Blaze513 1:94c648931f84 53 {
Blaze513 1:94c648931f84 54 return 0;
Blaze513 1:94c648931f84 55 }
Blaze513 1:94c648931f84 56
Blaze513 1:94c648931f84 57 off_t FATFileHandle::lseek(off_t offset, int whence)
Blaze513 1:94c648931f84 58 {
Blaze513 1:94c648931f84 59 switch (whence)
Blaze513 1:94c648931f84 60 {
Blaze513 1:94c648931f84 61 case SEEK_CUR: offset += FileObject.fptr; break;
Blaze513 1:94c648931f84 62 case SEEK_END: offset += FileObject.fsize; break;
Blaze513 1:94c648931f84 63 }
Blaze513 1:94c648931f84 64 if (f_lseek(&FileObject, (DWORD)offset))
Blaze513 1:94c648931f84 65 {
Blaze513 1:94c648931f84 66 return -1;
Blaze513 1:94c648931f84 67 }
Blaze513 1:94c648931f84 68 else
Blaze513 1:94c648931f84 69 {
Blaze513 1:94c648931f84 70 return (off_t)FileObject.fptr;
Blaze513 1:94c648931f84 71 }
Blaze513 1:94c648931f84 72 }
Blaze513 1:94c648931f84 73
Blaze513 1:94c648931f84 74 int FATFileHandle::fsync()
Blaze513 1:94c648931f84 75 {
Blaze513 1:94c648931f84 76 if (f_sync(&FileObject))
Blaze513 1:94c648931f84 77 {
Blaze513 1:94c648931f84 78 return -1;
Blaze513 1:94c648931f84 79 }
Blaze513 1:94c648931f84 80 else
Blaze513 1:94c648931f84 81 {
Blaze513 1:94c648931f84 82 return 0;
Blaze513 1:94c648931f84 83 }
Blaze513 1:94c648931f84 84 }
Blaze513 1:94c648931f84 85
Blaze513 1:94c648931f84 86 off_t FATFileHandle::flen()
Blaze513 1:94c648931f84 87 {
Blaze513 1:94c648931f84 88 return (off_t)FileObject.fsize;
Blaze513 1:94c648931f84 89 }