You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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