root / arduino-1.0 / libraries / SD / SD.h @ 58d82c77
History | View | Annotate | Download (2.67 KB)
1 | 58d82c77 | Tom Mullins | /*
|
---|---|---|---|
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 |