My Project
memory.cpp
Go to the documentation of this file.
1 // Copyright (c) 2023 Samuli Nyman
2 // SPDX-License-Identifier: MIT
3 
4 #include "CanSatNeXTPins.h"
5 #include "FS.h"
6 #include "SD.h"
7 #include "SPI.h"
8 
9 SPIClass spi = SPIClass(VSPI);
10 
11 uint8_t initSDCard()
12 {
13  pinMode(SD_DET, INPUT);
14  pinMode(SD_CS, OUTPUT);
15  digitalWrite(SD_CS, LOW);
16  spi.begin(SPI_CLK, SPI_MISO, SPI_MOSI, SD_CS);
17 
18  if (!SD.begin(SD_CS,spi,80000000)) return 1;
19  uint8_t cardType = SD.cardType();
20 
21  if(cardType == CARD_NONE){
22  Serial.println("No SD card attached");
23  return 1;
24  }
25 
26  return 0;
27 }
28 
29 uint8_t appendFileOnDisk(String path, String data)
30 {
31  File file = SD.open(path, FILE_APPEND);
32  if(!file){
33  return 1;
34  }
35  uint8_t error = file.print(data);
36  file.close();
37  if(error) return 1;
38  return 0;
39 }
40 
41 void printDirectory(File dir, int numTabs) {
42  while (true) {
43  File entry = dir.openNextFile();
44  if (!entry) {
45  // No more files in the directory
46  break;
47  }
48  Serial.print("|");
49  for (int i = 0; i < numTabs; i++) {
50  Serial.print("__");
51  }
52  Serial.print(entry.name());
53  if (entry.isDirectory()) {
54  Serial.println("/");
55  printDirectory(entry, numTabs + 1);
56  } else {
57  Serial.println();
58  }
59  entry.close();
60  }
61 }
62 
64  Serial.println("root");
65  File root = SD.open("/");
66  if (root) {
67  printDirectory(root, 1);
68  root.close();
69  } else {
70  Serial.println("Failed to open directory");
71  }
72 }
73 
74 void newDir(String path) {
75  SD.mkdir(path);
76 }
77 
78 void deleteDir(String path)
79 {
80  SD.rmdir(path);
81 }
82 
83 bool fileExists(String path)
84 {
85  return SD.exists(path);
86 }
87 
88 uint32_t fileSize(String path)
89 {
90  File f = SD.open(path);
91  if(!f) return 0;
92  uint32_t length = f.size();
93  f.close();
94  return length;
95 }
96 
97 uint8_t writeFileOnDisk(String path, String data)
98 {
99  File file = SD.open(path, FILE_WRITE);
100  if(!file){
101  return 1;
102  }
103  uint8_t error = file.print(data);
104  file.close();
105  if(error) return 1;
106  return 0;
107 }
108 
109 String readFile(String path)
110 {
111  File f = SD.open(path);
112  if(!f) return "";
113 
114  String s = f.readString();
115  f.close();
116  return s;
117 }
118 
119 void renameFile(String oldpath, String newpath)
120 {
121  SD.rename(oldpath, newpath);
122 }
123 
124 void deleteFile(String path)
125 {
126  SD.remove(path);
127 }
128 
130 {
131  return digitalRead(SD_DET) == 0;
132 }
deleteFile
void deleteFile(String path)
Definition: memory.cpp:124
fileSize
uint32_t fileSize(String path)
Definition: memory.cpp:88
CanSatNeXTPins.h
SD_DET
#define SD_DET
Definition: CanSatNeXTPins.h:14
renameFile
void renameFile(String oldpath, String newpath)
Definition: memory.cpp:119
SPI_CLK
#define SPI_CLK
Definition: CanSatNeXTPins.h:18
newDir
void newDir(String path)
Definition: memory.cpp:74
SDCardPresent
bool SDCardPresent()
Definition: memory.cpp:129
spi
SPIClass spi
Definition: memory.cpp:9
initSDCard
uint8_t initSDCard()
Definition: memory.cpp:11
printDirectory
void printDirectory(File dir, int numTabs)
Definition: memory.cpp:41
appendFileOnDisk
uint8_t appendFileOnDisk(String path, String data)
Definition: memory.cpp:29
readFile
String readFile(String path)
Definition: memory.cpp:109
writeFileOnDisk
uint8_t writeFileOnDisk(String path, String data)
Definition: memory.cpp:97
SPI_MISO
#define SPI_MISO
Definition: CanSatNeXTPins.h:19
SD_CS
#define SD_CS
Definition: CanSatNeXTPins.h:10
fileExists
bool fileExists(String path)
Definition: memory.cpp:83
printFileSystem
void printFileSystem()
Definition: memory.cpp:63
deleteDir
void deleteDir(String path)
Definition: memory.cpp:78
SPI_MOSI
#define SPI_MOSI
Definition: CanSatNeXTPins.h:22