3 SD - a slightly more friendly wrapper for sdfatlib
5 This library aims to expose a subset of SD card functionality
6 in the form of a higher level "wrapper" object.
8 License: GNU General Public License V3
9 (Because sdfatlib is licensed with this.)
11 (C) Copyright 2010 SparkFun Electronics
17 /* for debugging file open/close leaks
21 File::File(SdFile f, char *n) {
22 // oh man you are kidding me, new() doesnt exist? Ok we do it by hand!
23 _file = (SdFile *)malloc(sizeof(SdFile));
25 memcpy(_file, &f, sizeof(SdFile));
27 strncpy(_name, n, 12);
30 /* for debugging file open/close leaks
32 Serial.print("Created \"");
35 Serial.println(nfilecount, DEC);
43 //Serial.print("Created empty file object");
47 // Serial.print("Deleted file object");
50 // returns a pointer to the file name
51 char *File::name(void) {
55 // a directory is a special type of file
56 boolean File::isDirectory(void) {
57 return (_file && _file->isDir());
63 size_t File::write(uint8_t val) {
65 return _file->write(val);
70 size_t File::write(const char *str) {
72 return _file->write(str);
77 size_t File::write(const uint8_t *buf, size_t size) {
79 return _file->write(buf, size);
86 void File::write(uint8_t val) {
91 void File::write(const char *str) {
96 void File::write(const uint8_t *buf, size_t size) {
98 _file->write(buf, size);
107 int c = _file->read();
108 if (c != -1) _file->seekCur(-1);
114 return _file->read();
118 // buffered read for more efficient, high speed reading
119 int File::read(void *buf, uint16_t nbyte) {
121 return _file->read(buf, nbyte);
125 int File::available() {
126 if (! _file) return 0;
128 uint32_t n = size() - position();
130 return n > 0X7FFF ? 0X7FFF : n;
138 boolean File::seek(uint32_t pos) {
139 if (! _file) return false;
141 return _file->seekSet(pos);
144 uint32_t File::position() {
145 if (! _file) return -1;
146 return _file->curPosition();
149 uint32_t File::size() {
150 if (! _file) return 0;
151 return _file->fileSize();
160 /* for debugging file open/close leaks
162 Serial.print("Deleted ");
163 Serial.println(nfilecount, DEC);
168 File::operator bool() {
170 return _file->isOpen();