Replacing boolean parameters to SD.open() with SD_MODE constants.

This commit is contained in:
David A. Mellis 2010-11-28 12:43:13 -06:00
parent 00a9f99c9b
commit ff89afb606
4 changed files with 27 additions and 20 deletions

View File

@ -15,11 +15,25 @@ void setup()
ATS_PrintTestStatus("SD.begin()", b = SD.begin(4));
if (!b) goto done;
f = SD.open("test.txt", true, false);
f = SD.open("test.txt", SD_TRUNCATE);
ATS_PrintTestStatus("SD.open()", f);
if (!f) goto done;
f.print("abcdefgh");
f.print("1234");
f.close();
f = SD.open("test.txt", SD_TRUNCATE);
ATS_PrintTestStatus("SD.open()", f);
if (!f) goto done;
f.print("abcde");
f.close();
f = SD.open("test.txt", SD_APPEND);
ATS_PrintTestStatus("SD.open()", f);
if (!f) goto done;
f.print("fgh");
f.close();
f = SD.open("test.txt");
@ -57,7 +71,7 @@ void setup()
f.close();
f = SD.open("test2.txt", true, false);
f = SD.open("test2.txt", SD_TRUNCATE);
ATS_PrintTestStatus("SD.open()", f);
if (!f) goto done;

View File

@ -13,7 +13,7 @@ void setup()
if (!b) goto done;
ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf.txt"));
ATS_PrintTestStatus("SD.open()", f = SD.open("asdf.txt", true)); f.close();
ATS_PrintTestStatus("SD.open()", f = SD.open("asdf.txt", SD_TRUNCATE)); f.close();
ATS_PrintTestStatus("SD.exists()", SD.exists("asdf.txt"));
ATS_PrintTestStatus("SD.exists()", SD.exists("/asdf.txt"));
ATS_PrintTestStatus("SD.remove()", SD.remove("asdf.txt"));
@ -48,13 +48,13 @@ void setup()
ATS_PrintTestStatus("!SD.exists()", !SD.exists("x/y"));
ATS_PrintTestStatus("!SD.exists()", !SD.exists("x/y/z"));
ATS_PrintTestStatus("!SD.open()", !(f = SD.open("asdf/asdf.txt", true))); f.close();
ATS_PrintTestStatus("!SD.open()", !(f = SD.open("asdf/asdf.txt", SD_TRUNCATE))); f.close();
ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf"));
ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf.txt"));
ATS_PrintTestStatus("!SD.exists()", !SD.exists("asdf/asdf.txt"));
ATS_PrintTestStatus("SD.mkdir()", SD.mkdir("asdf"));
ATS_PrintTestStatus("SD.exists()", SD.exists("asdf"));
ATS_PrintTestStatus("SD.open()", f = SD.open("asdf/asdf.txt", true)); f.close();
ATS_PrintTestStatus("SD.open()", f = SD.open("asdf/asdf.txt", SD_TRUNCATE)); f.close();
ATS_PrintTestStatus("SD.exists()", SD.exists("asdf/asdf.txt"));
ATS_PrintTestStatus("!SD.rmdir()", !SD.rmdir("asdf"));
ATS_PrintTestStatus("SD.exists()", SD.exists("asdf"));

View File

@ -343,7 +343,7 @@ boolean SDClass::begin(uint8_t csPin) {
}
File SDClass::open(char *filepath, boolean write, boolean append) {
File SDClass::open(char *filepath, uint8_t mode) {
/*
Open the supplied file path for reading or writing.
@ -369,18 +369,7 @@ File SDClass::open(char *filepath, boolean write, boolean append) {
// TODO: Allow for read&write? (Possibly not, as it requires seek.)
uint8_t oflag = O_RDONLY;
if (write) {
oflag = O_CREAT | O_WRITE;
if (append) {
oflag |= O_APPEND;
} else {
oflag |= O_TRUNC;
}
}
fileOpenMode = oflag;
fileOpenMode = mode;
walkPath(filepath, root, callback_openPath, this);
return File();

View File

@ -20,6 +20,10 @@
#include <utility/SdFat.h>
#include <utility/SdFatUtil.h>
#define SD_READ O_READ
#define SD_TRUNCATE (O_WRITE | O_CREAT | O_TRUNC)
#define SD_APPEND (O_WRITE | O_CREAT | O_APPEND)
class File : public Stream {
public:
virtual void write(uint8_t);
@ -49,7 +53,7 @@ public:
// Open the specified file/directory with the supplied mode (e.g. read or
// write, etc). Returns a File object for interacting with the file.
// Note that currently only one file can be open at a time.
File open(char *filename, boolean write = false, boolean append = true);
File open(char *filename, uint8_t mode = SD_READ);
// Methods to determine if the requested file path exists.
boolean exists(char *filepath);