Welcome to mirror list, hosted at ThFree Co, Russian Federation.

MassStorage.h « Storage « src - github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: b6e87c0580ae021a2f259e23230768eb53a0b728 (plain)
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