1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#ifndef MASSSTORAGE_H
#define MASSSTORAGE_H
#include "RepRapFirmware.h"
#include "Pins.h"
#include "FileWriteBuffer.h"
#include "Libraries/Fatfs/ff.h"
#include "GCodes/GCodeResult.h"
#include <ctime>
// Info returned by FindFirst/FindNext calls
struct FileInfo
{
bool isDirectory;
char fileName[FILENAME_LENGTH];
uint32_t size;
time_t lastModified;
};
class MassStorage
{
public:
bool FindFirst(const char *directory, FileInfo &file_info);
bool FindNext(FileInfo &file_info);
const char* GetMonthName(const uint8_t month);
const char* CombineName(const char* directory, const char* fileName);
bool Delete(const char* directory, const char* fileName, bool silent = false);
bool MakeDirectory(const char *parentDir, const char *dirName);
bool MakeDirectory(const char *directory);
bool Rename(const char *oldFilename, const char *newFilename);
bool FileExists(const char *file) const;
bool FileExists(const char* directory, const char *fileName) const;
bool DirectoryExists(const char *path) const;
bool DirectoryExists(const char* directory, const char* subDirectory);
time_t GetLastModifiedTime(const char* directory, const char *fileName) const;
bool SetLastModifiedTime(const char* directory, const char *file, time_t time);
GCodeResult Mount(size_t card, StringRef& reply, bool reportSuccess);
GCodeResult Unmount(size_t card, StringRef& reply);
bool IsDriveMounted(size_t drive) const { return drive < NumSdCards && isMounted[drive]; }
bool CheckDriveMounted(const char* path);
friend class Platform;
friend class FileStore;
protected:
MassStorage(Platform* p);
void Init();
FileWriteBuffer *AllocateWriteBuffer();
void ReleaseWriteBuffer(FileWriteBuffer *buffer);
private:
static time_t ConvertTimeStamp(uint16_t fdate, uint16_t ftime);
Platform* platform;
FATFS fileSystems[NumSdCards];
DIR findDir;
bool isMounted[NumSdCards];
char combinedName[FILENAME_LENGTH + 1];
FileWriteBuffer *freeWriteBuffers;
};
#endif
|