1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-04-10 02:02:21 +02:00

Revising SD library API.

Open now returns a file object (which has a close() method); exists() no longer accepts a parent directory.
This commit is contained in:
David A. Mellis 2010-11-19 22:30:40 -05:00
parent 06d3d85143
commit a5898ae26a
3 changed files with 72 additions and 23 deletions

39
libraries/SD/File.cpp Normal file
View File

@ -0,0 +1,39 @@
/*
SD - a slightly more friendly wrapper for sdfatlib
This library aims to expose a subset of SD card functionality
in the form of a higher level "wrapper" object.
License: GNU General Public License V3
(Because sdfatlib is licensed with this.)
(C) Copyright 2010 SparkFun Electronics
*/
#include <SD.h>
void File::write(uint8_t val) {
SD.file.write(val);
}
void File::write(const char *str) {
SD.file.write(str);
}
void File::write(const uint8_t *buf, size_t size) {
SD.file.write(buf, size);
}
int File::read() {
return SD.file.read();
}
void File::close() {
SD.file.close();
}
File::operator bool() {
return SD.file.isOpen();
}

View File

@ -327,7 +327,7 @@ void SDClass::begin(uint8_t csPin) {
} }
boolean SDClass::open(char *filepath, File SDClass::open(char *filepath,
boolean write, boolean append) { boolean write, boolean append) {
/* /*
@ -368,19 +368,19 @@ boolean SDClass::open(char *filepath,
fileOpenMode = oflag; fileOpenMode = oflag;
walkPath(filepath, root, callback_openPath, this); walkPath(filepath, root, callback_openPath, this);
// TODO: Actually return something useful. return File();
} }
boolean SDClass::close() { //boolean SDClass::close() {
/* // /*
//
Closes the file opened by the `open` method. // Closes the file opened by the `open` method.
//
*/ // */
file.close(); // file.close();
} //}
boolean SDClass::exists(char *filepath) { boolean SDClass::exists(char *filepath) {
@ -389,19 +389,19 @@ boolean SDClass::exists(char *filepath) {
Returns true if the supplied file path exists. Returns true if the supplied file path exists.
*/ */
return exists(filepath, root); return walkPath(filepath, root, callback_pathExists);
} }
boolean SDClass::exists(char *filepath, SdFile& parentDir) { //boolean SDClass::exists(char *filepath, SdFile& parentDir) {
/* // /*
//
Returns true if the supplied file path rooted at `parentDir` // Returns true if the supplied file path rooted at `parentDir`
exists. // exists.
//
*/ // */
return walkPath(filepath, parentDir, callback_pathExists); // return walkPath(filepath, parentDir, callback_pathExists);
} //}
boolean SDClass::makeDir(char *filepath) { boolean SDClass::makeDir(char *filepath) {

View File

@ -23,6 +23,16 @@
// Use this to configure the chip select pin of the SD card. // Use this to configure the chip select pin of the SD card.
#define SD_CARD_CHIP_SELECT_PIN 4 // For use with Arduino Ethernet Shield #define SD_CARD_CHIP_SELECT_PIN 4 // For use with Arduino Ethernet Shield
class File : public Print {
public:
virtual void write(uint8_t);
virtual void write(const char *str);
virtual void write(const uint8_t *buf, size_t size);
int read();
void close();
operator bool();
};
class SDClass { class SDClass {
private: private:
@ -40,14 +50,14 @@ class SDClass {
// Open the specified file/directory with the supplied mode (e.g. read or // Open the specified file/directory with the supplied mode (e.g. read or
// write, etc). Once opened the file can be accessed via the // write, etc). Once opened the file can be accessed via the
// `MemoryCard.file` field which is a standard `sdfatlib` file object. // `MemoryCard.file` field which is a standard `sdfatlib` file object.
boolean open(char *filename, boolean write = false, boolean append = true); File open(char *filename, boolean write = false, boolean append = true);
// Close an opened file object. // Close an opened file object.
boolean close(); //boolean close();
// Methods to determine if the requested file path exists. // Methods to determine if the requested file path exists.
boolean exists(char *filepath); boolean exists(char *filepath);
boolean exists(char *filepath, SdFile& parentDir); //boolean exists(char *filepath, SdFile& parentDir);
// Create the requested directory heirarchy--if intermediate directories // Create the requested directory heirarchy--if intermediate directories
// do not exist they will be created. // do not exist they will be created.