Code for autonomous ground vehicle, Data Bus, 3rd place winner in 2012 Sparkfun AVC.

Dependencies:   Watchdog mbed Schedule SimpleFilter LSM303DLM PinDetect DebounceIn Servo

Committer:
shimniok
Date:
Wed Jun 20 14:57:48 2012 +0000
Revision:
0:826c6171fc1b
Updated documentation

Who changed what in which revision?

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