root / arduino-1.0 / libraries / SD / SD.h @ 58d82c77
History | View | Annotate | Download (2.67 KB)
1 |
/*
|
---|---|
2 |
|
3 |
SD - a slightly more friendly wrapper for sdfatlib
|
4 |
|
5 |
This library aims to expose a subset of SD card functionality
|
6 |
in the form of a higher level "wrapper" object.
|
7 |
|
8 |
License: GNU General Public License V3
|
9 |
(Because sdfatlib is licensed with this.)
|
10 |
|
11 |
(C) Copyright 2010 SparkFun Electronics
|
12 |
|
13 |
*/
|
14 |
|
15 |
#ifndef __SD_H__
|
16 |
#define __SD_H__
|
17 |
|
18 |
#include <Arduino.h> |
19 |
|
20 |
#include <utility/SdFat.h> |
21 |
#include <utility/SdFatUtil.h> |
22 |
|
23 |
#define FILE_READ O_READ
|
24 |
#define FILE_WRITE (O_READ | O_WRITE | O_CREAT)
|
25 |
|
26 |
class File : public Stream { |
27 |
private:
|
28 |
char _name[13]; // our name |
29 |
SdFile *_file; // underlying file pointer
|
30 |
|
31 |
public:
|
32 |
File(SdFile f, const char *name); // wraps an underlying SdFile |
33 |
File(void); // 'empty' constructor |
34 |
~File(void); // destructor |
35 |
virtual size_t write(uint8_t); |
36 |
virtual size_t write(const uint8_t *buf, size_t size);
|
37 |
virtual int read();
|
38 |
virtual int peek();
|
39 |
virtual int available();
|
40 |
virtual void flush();
|
41 |
int read(void *buf, uint16_t nbyte); |
42 |
boolean seek(uint32_t pos); |
43 |
uint32_t position(); |
44 |
uint32_t size(); |
45 |
void close();
|
46 |
operator bool();
|
47 |
char * name();
|
48 |
|
49 |
boolean isDirectory(void);
|
50 |
File openNextFile(uint8_t mode = O_RDONLY); |
51 |
void rewindDirectory(void); |
52 |
|
53 |
using Print::write; |
54 |
}; |
55 |
|
56 |
class SDClass { |
57 |
|
58 |
private:
|
59 |
// These are required for initialisation and use of sdfatlib
|
60 |
Sd2Card card; |
61 |
SdVolume volume; |
62 |
SdFile root; |
63 |
|
64 |
// my quick&dirty iterator, should be replaced
|
65 |
SdFile getParentDir(const char *filepath, int *indx); |
66 |
public:
|
67 |
// This needs to be called to set up the connection to the SD card
|
68 |
// before other methods are used.
|
69 |
boolean begin(uint8_t csPin = SD_CHIP_SELECT_PIN); |
70 |
|
71 |
// Open the specified file/directory with the supplied mode (e.g. read or
|
72 |
// write, etc). Returns a File object for interacting with the file.
|
73 |
// Note that currently only one file can be open at a time.
|
74 |
File open(const char *filename, uint8_t mode = FILE_READ); |
75 |
|
76 |
// Methods to determine if the requested file path exists.
|
77 |
boolean exists(char *filepath);
|
78 |
|
79 |
// Create the requested directory heirarchy--if intermediate directories
|
80 |
// do not exist they will be created.
|
81 |
boolean mkdir(char *filepath);
|
82 |
|
83 |
// Delete the file.
|
84 |
boolean remove(char *filepath);
|
85 |
|
86 |
boolean rmdir(char *filepath);
|
87 |
|
88 |
private:
|
89 |
|
90 |
// This is used to determine the mode used to open a file
|
91 |
// it's here because it's the easiest place to pass the
|
92 |
// information through the directory walking function. But
|
93 |
// it's probably not the best place for it.
|
94 |
// It shouldn't be set directly--it is set via the parameters to `open`.
|
95 |
int fileOpenMode;
|
96 |
|
97 |
friend class File; |
98 |
friend boolean callback_openPath(SdFile&, char *, boolean, void *); |
99 |
}; |
100 |
|
101 |
extern SDClass SD;
|
102 |
|
103 |
#endif
|