Thu, 07 Jul 2016 12:23:34 +0200
added missing sanguino files
0 | 1 | #ifndef CARDREADER_H |
2 | #define CARDREADER_H | |
3 | ||
4 | #ifdef SDSUPPORT | |
5 | ||
6 | #include "SdFile.h" | |
7 | enum LsAction {LS_SerialPrint,LS_Count,LS_GetFilename}; | |
8 | class CardReader | |
9 | { | |
10 | public: | |
11 | CardReader(); | |
12 | ||
13 | void initsd(); | |
14 | void write_command(char *buf); | |
15 | //files auto[0-9].g on the sd card are performed in a row | |
16 | //this is to delay autostart and hence the initialisaiton of the sd card to some seconds after the normal init, so the device is available quick after a reset | |
17 | ||
18 | void checkautostart(bool x); | |
19 | void openFile(char* name,bool read); | |
20 | void removeFile(char* name); | |
21 | void closefile(); | |
22 | void release(); | |
23 | void startFileprint(); | |
24 | void pauseSDPrint(); | |
25 | void getStatus(); | |
26 | void printingHasFinished(); | |
27 | ||
28 | void getfilename(const uint8_t nr); | |
29 | uint16_t getnrfilenames(); | |
30 | ||
31 | ||
32 | void ls(); | |
33 | void chdir(const char * relpath); | |
34 | void updir(); | |
35 | void setroot(); | |
36 | ||
37 | void fast_xfer(char* strchr_pointer); | |
38 | ||
39 | ||
40 | FORCE_INLINE bool eof() { return sdpos>=filesize ;}; | |
41 | FORCE_INLINE int16_t get() { sdpos = file.curPosition();return (int16_t)file.read();}; | |
42 | FORCE_INLINE void setIndex(long index) {sdpos = index;file.seekSet(index);}; | |
43 | FORCE_INLINE uint8_t percentDone(){if(!sdprinting) return 0; if(filesize) return sdpos*100/filesize; else return 0;}; | |
44 | FORCE_INLINE char* getWorkDirName(){workDir.getFilename(filename);return filename;}; | |
45 | ||
46 | public: | |
47 | bool saving; | |
48 | bool sdprinting ; | |
49 | bool cardOK ; | |
50 | char filename[12]; | |
51 | bool filenameIsDir; | |
52 | int lastnr; //last number of the autostart; | |
53 | char fastxferbuffer[SD_FAST_XFER_CHUNK_SIZE + 1]; | |
54 | private: | |
55 | SdFile root,*curDir,workDir,workDirParent,workDirParentParent; | |
56 | Sd2Card card; | |
57 | SdVolume volume; | |
58 | SdFile file; | |
59 | uint32_t filesize; | |
60 | //int16_t n; | |
61 | unsigned long autostart_atmillis; | |
62 | uint32_t sdpos ; | |
63 | ||
64 | bool autostart_stilltocheck; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware. | |
65 | ||
66 | LsAction lsAction; //stored for recursion. | |
67 | int16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory. | |
68 | char* diveDirName; | |
69 | void lsDive(const char *prepend,SdFile parent); | |
70 | int lastxferchar; | |
71 | long xferbytes; | |
72 | }; | |
73 | #define IS_SD_PRINTING (card.sdprinting) | |
74 | ||
75 | #else | |
76 | ||
77 | #define IS_SD_PRINTING (false) | |
78 | ||
79 | #endif //SDSUPPORT | |
80 | #endif |